同一功能上有多个“用户选项”参数

时间:2014-06-19 15:03:26

标签: jquery jcrop

不知道我的术语在问题标题中是否正确。随意修改。

我需要知道如何在jquery函数上分配多个参数。

我的功能目前如下:

$(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

但这三种方式似乎都不起作用。我该怎么做?

2 个答案:

答案 0 :(得分:4)

您需要为该参数提供一个匿名函数,该函数调用这两个函数:

onChange: function(c) {
    showCoords(c);
    updatePreview(c);
}

答案 1 :(得分:2)

你在这里做的是传递anonymous function并在其中,你可以调用你想要的其他功能。

它看起来像这样:

$('#crop-me').Jcrop({
    ...
    onChange: function(){ 
      showCoords();
      updatePreview();
    },
    ...
});

如果要保留传递给函数的所有参数,可以使用每个函数中存在的arguments variable。此变量类似于数组,包含传递给函数的所有参数。

$('#crop-me').Jcrop({
    ...
    onChange: function(){ 
      showCoords( arguments );
      updatePreview( arguments );
    },
    ...
});

MDN JavaScript documentation有关于参数变量的说法:

  

arguments对象是所有函数中可用的局部变量;作为Function属性的参数不能再使用了。

     

您可以使用arguments对象引用函数中的函数参数。该对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。