我正在使用jQuery 1.10.2,但如果它不相同,我也想知道最现代版本的解决方案。
我有一个javascript文件,可以添加和删除一些自定义事件。
$(window).on('clicked_button', function(event) {
// Do stuff
});
if (someCriteria) {
$(window).off('clicked_button');
}
if (otherCriteria) {
$(window).trigger('clicked_button');
}
我知道您可以在数据对象中loop through the events来检查事件是否已经绑定,但这是必要的吗?我不在乎活动是否已被约束,我只是想确保在someCriteria
满足后不受约束。
当我在Firefox的js控制台中运行$(window).off('clicked_button');
时,它只返回窗口对象。我可以假设,如果事件尚未绑定,off()
函数不会抛出错误吗?我更喜欢只使用off()
并让它静默失败,而不是在解除绑定之前必须遍历绑定事件。
我需要这个适用于现代浏览器和IE 9 +。
答案 0 :(得分:2)
根据jQuery API文档,在版本1.7中添加了off()。即使自定义$(window).off('clicked_button')
事件从未绑定到元素,'clicked_button'
也会以静默方式失败。
同样,调用$(window).off()
将删除所有事件处理程序而不会出现错误,即使没有绑定也是如此。