所以我有以下内容:
var change_handler = function(element) {
// ... do some fancy stuff ...
}
现在,我想将它附加到一个元素上。哪种方法更好/更好或更正确?
$('element_selector').change(change_handler(this));
或者...
$('element_selector').change(function() { change_handler(this); });
如果您将对象传递给函数,它会有什么不同吗?
答案 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);