【问题标题】:Binding multiple events in jQuery在jQuery中绑定多个事件
【发布时间】:2010-04-18 10:04:02
【问题描述】:

我有一个自定义 jQuery 插件,它将 change 事件绑定到表单元素,在本例中为一些 input 元素。 change 事件用于向其他一些组件指示发生了更改。

这可以正常工作。

但是,我遇到了需要将额外的change 事件绑定到相同的input 元素——以便其他组件可以对事件进行操作。我不想替换插件的change,之后只需运行一个附加功能。

有没有办法在 jQuery 中绑定多个事件,或者,最好的方法是什么?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以为同一事件绑定多个处理程序。像往常一样绑定第二个更改:

    ​<input type="text" id="a" />​​​​​​​​​​​​​​​
    
    ​$("#a"​).change(function() { alert("1"); });
    $("#a").change(function() { alert("2"); });​
    
    $("#a").change(); // alerts 1, then 2
    

    【讨论】:

    • 啊,干杯。我的印象是这样做会取代第一个功能。
    • 相同的逻辑是否适用于将bind() 用于对象而不是每个单独的函数?因为我使用bind() 没有取得同样的成功。
    • change 只是bind 的简写,所以它应该可以工作。使用绑定有什么问题?创建了一个将函数引用传递给绑定的小示例 - jsfiddle.net/B9ggj
    • 你能确保遵循一定的顺序吗?
    【解决方案2】:

    jQuery 中的事件堆栈。如果你这样做:

    <input type="button" value="Press me">
    

    和:

    $(":button").click(function() {
      alert("click");
    }).click(function() {
      alert("click 2");
    });
    

    两者都会触发。所以只需将另一个事件绑定到相关元素。它不会覆盖第一个。

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2010-11-29
      相关资源
      最近更新 更多