使用匿名函数定义on时的jQuery off

时间:2016-01-19 04:09:56

标签: javascript jquery

我有一个函数,它使用一个只接收部分事件数据的回调来注册一个事件处理程序。

我的问题是我希望通过在.off之前调用.on来防止多次注册该函数,但我不确定如何在此.off中指定回调因为它必须与.on

使用的功能相同

例如:

function myclick(elem, callback) {
  //elem.off('click', ???? ); // how should this be specified
  elem.on('click', function (e) {
     callback(e.target);
  }
}

我正在寻找一种不依赖jQuery的通用解决方案,因为任何提供on和off功能的库都会发生这种情况。

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用event namespacing,这将确保仅删除具有给定命名空间的处理程序,而其他人则不会。

function myclick(elem, callback) {
  elem.off('click.myradomnamespace').on('click.myradomnamespace', function (e) {
     callback(e.target);
  }
}

但如果您这样做是为了处理动态元素,请使用event delegation

答案 1 :(得分:-1)

下一个参数是您之前传递过的委托(函数),如果您之前不知道哪个委托被传递,那么只需简单传递' **'删除所有委托:

elem.off('click', '**');

更多参考:http://api.jquery.com/off/
希望这可以帮到你!