确保jQuery委托处理程序只附加一次

时间:2016-10-24 20:23:21

标签: javascript jquery

我有一个函数将jQuery委托处理程序附加到元素的click事件:

function foo() {
      $(document).delegate("#fooElement", "click, function(event) {

      });
}

foo函数可能在页面的整个生命周期中被多次调用,并且有时可以删除处理程序。确保最多只能一次连接此处理程序的一次实例的最佳方法是什么?我应该做这样的事情来删除处理程序然后重新附加它:

function foo() {
      $(document).undelegate().delegate("#fooElement", "click, function(event) {

      });
}

或者我是否需要跟踪布尔值isHandlerAttached。理想情况下,有一种更简洁的方法可以做到这一点,但我还没有在jQuery文档中找到任何内容。

1 个答案:

答案 0 :(得分:0)

文档是一个非常通用的元素,每个人都添加事件,所以我建议名称间隔事件名称。代表& undelegate已被弃用,您应该使用on / off

$(document).off('click.foo', '#fooElement').on('click.foo', '#fooElement', function(e) {
    // put your logic in here
})