【问题标题】:jQuery: adding change event handler with predefined functionjQuery:使用预定义函数添加更改事件处理程序
【发布时间】:2010-12-24 04:27:10
【问题描述】:

所以我有以下内容:

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

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

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

或者……

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

如果你将对象传递给函数有什么不同吗?

【问题讨论】:

    标签: javascript jquery onchange


    【解决方案1】:

    都没有..

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

    change_handler 可以说是指向方法的指针,并且元素的参数已经被 jQuery 传递了

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 2010-10-07
        • 2012-08-05
        • 1970-01-01
        • 2014-02-07
        • 2011-01-24
        • 1970-01-01
        相关资源
        最近更新 更多