Javascript 解除绑定Jquery事件
我正在将一个事件同时绑定到两个ID。事实发生后,是否有一种方法可以针对一个ID解除事件绑定 下面是我的代码的简化版本。一个事件在AJAX请求返回HTML模板后解除绑定/绑定。。。如果呈现模板“AA”,则绑定第一个事件;如果呈现模板“BB”,则绑定第二个脚本Javascript 解除绑定Jquery事件,javascript,jquery,Javascript,Jquery,我正在将一个事件同时绑定到两个ID。事实发生后,是否有一种方法可以针对一个ID解除事件绑定 下面是我的代码的简化版本。一个事件在AJAX请求返回HTML模板后解除绑定/绑定。。。如果呈现模板“AA”,则绑定第一个事件;如果呈现模板“BB”,则绑定第二个脚本 //Template AA $('#container').off('dblclick', '#store, #compare_store'); $('#container').on('dblclick', '#store, #compare
//Template AA
$('#container').off('dblclick', '#store, #compare_store');
$('#container').on('dblclick', '#store, #compare_store', function(){
console.dir('test1');
});
//Template BB
$('#container').off('dblclick', '#store'); //This does not unbind the event listed as above
$('#container').on('dblclick', '#store', function(){
console.dir('test2');
});
/* Console Output When double-clicking '#store':
test1
test2
*/
双击“#store”元素时,当前会触发两个事件。理想的效果是让第二个事件与第一个事件解除绑定(仅适用于#store),并绑定一个新事件
我知道单独绑定每个ID将提供所需的结果。我也知道使用类也可以完成这项工作
提前谢谢你 更改选择器,使
off
方法调用与on
选择器匹配:
//Template AA
$('#container').on('click', '#compare_store', function(){
console.log("a", this);
}).on('click', '#store', function(){
console.log("b", this);
});
//Template BB
$('#container').off('click', '#store'); //This does not unbind the event listed as above
如果为原始选择器解除绑定
#存储,#比较(u存储
),则关闭
功能是否工作?我知道这不是您想要的,但我很好奇jquery是否希望这样做。老实说,我不知道jquery将如何处理这个问题,您可能需要单独绑定事件。您真的不能这样做,因为您必须将用于在on()
中绑定事件的选择器传递给off()
。您可以为事件命名名称空间,但这也不会有帮助,因为您仍然无法删除半个事件处理程序,如果您删除这样的事件处理程序,它要么是全部,要么是全部。@Helion 3:当使用off和“#store,#compare_store”时,它可以正常工作,因为它是逐字逐句的。@adeneo:这就是我担心的原因。我所有的疑难解答使我完全相信你所说的。。。我只是希望有一种方法可以让我的代码保持统一。我可能最终会命名事件函数。至少这将使每个绑定保持一行,并避免一些冗余代码。@ejc听起来像是个人问题;C英寸;C OUT;