我有一个函数,它使用一个只接收部分事件数据的回调来注册一个事件处理程序。
我的问题是我希望通过在.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功能的库都会发生这种情况。
答案 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/
希望这可以帮到你!