将off()用于未定义的事件时,jQuery会抛出错误吗?

时间:2016-04-01 16:26:27

标签: javascript jquery events javascript-events event-handling

我正在使用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 +。

1 个答案:

答案 0 :(得分:2)

根据jQuery API文档,在版本1.7中添加了off()。即使自定义$(window).off('clicked_button')事件从未绑定到元素,'clicked_button'也会以静默方式失败。

同样,调用$(window).off()将删除所有事件处理程序而不会出现错误,即使没有绑定也是如此。