解绑Jquery事件

时间:2014-02-07 17:57:28

标签: javascript jquery

我一次将事件绑定到两个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会提供所需的结果。我也知道使用课程也可以胜任。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

填充选择器,以便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

http://jsfiddle.net/xzgnH/