Javascript 解除绑定Jquery事件

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

我正在将一个事件同时绑定到两个ID。事实发生后,是否有一种方法可以针对一个ID解除事件绑定

下面是我的代码的简化版本。一个事件在AJAX请求返回HTML模板后解除绑定/绑定。。。如果呈现模板“AA”,则绑定第一个事件;如果呈现模板“BB”,则绑定第二个脚本

//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;