Несколько параметров «user option» для одной и той же функции

#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.