#jquery #jcrop
#jquery #jcrop
Вопрос:
Извините, не знаю, правильна ли моя терминология в названии вопроса. Не стесняйтесь вносить изменения.
Мне нужно знать, как назначить несколько параметров для jquery
функции.
Моя функция в настоящее время читается как so:
$(document).ready(function() {
$('#crop-me').Jcrop({
aspectRatio: 130 / 170,
minSize: [130, 170],
setSelect: [260, 340, 0, 0],
onChange: showCoords,
onSelect: showCoords
});
function showCoords(c) {
...
}
function updatePreview(d) {
...
}
});
Но мне также нужно назначить updatePreview
onChange:
и onSelect:
. Как мне это сделать?
Я пробовал следующее:
onChange: showCoords updatePreview
onChange: [showCoords, updatePreview]
onChange: showCoords,
onChange: updatePreview
Но ни один из этих трех способов, похоже, не работает. Как бы я это сделал?
Ответ №1:
Вам необходимо предоставить анонимную функцию для этого параметра, который вызывает обе функции:
onChange: function(c) {
showCoords(c);
updatePreview(c);
}
Ответ №2:
Что вы должны сделать здесь, так это передать анонимную функцию, и внутри нее вы можете вызывать другие нужные вам функции.
Это будет выглядеть примерно так:
$('#crop-me').Jcrop({
...
onChange: function(){
showCoords();
updatePreview();
},
...
});
Если вы хотите сохранить все аргументы, передаваемые функциям, вы можете использовать arguments
переменную, которая существует в каждой функции. Эта переменная представляет собой массив, содержащий все аргументы, переданные функции.
$('#crop-me').Jcrop({
...
onChange: function(){
showCoords( arguments );
updatePreview( arguments );
},
...
});
В документации MDN JavaScript есть это, чтобы сказать о переменной arguments:
Объект arguments является локальной переменной, доступной во всех функциях; аргументы как свойство функции больше не могут использоваться.
Вы можете ссылаться на аргументы функции внутри функции, используя объект arguments . Этот объект содержит запись для каждого аргумента, передаваемого функции, индекс первой записи начинается с 0.