jQuery:使用预定义函数添加更改事件处理程序

时间:2010-12-24 04:27:11

标签: javascript jquery onchange

所以我有以下内容:

var change_handler = function(element) {
    // ... do some fancy stuff ...
}

现在,我想将它附加到一个元素上。哪种方法更好/更好或更正确?

$('element_selector').change(change_handler(this));

或者...

$('element_selector').change(function() { change_handler(this); });

如果您将对象传递给函数,它会有什么不同吗?

2 个答案:

答案 0 :(得分:5)

既不..

$('element_selector').change(change_handler);

change_handler将是指向该方法的指针,该元素的参数已经由jQuery传递

如果您要使用$('element_selector').change(change_handler(this));,它实际上不会将该方法指定为处理程序,而是运行该方法并尝试将结果指定为处理程序,另一个选项是多余的,因为您可以使用该方法如上所述的名称,而不是重新包装方法。

答案 1 :(得分:1)

这是解决OP ...部分函数应用程序la another SO Q给出的问题的另一种方法。使用感兴趣的arg绑定更改处理程序,并将生成的partial作为arg传递给更改处理程序:

var myChangeHandler = partial(change_handler, this);
$('element_selector').change(myChangeHandler);