jQuery 对未定义事件使用 off() 时会抛出错误吗?

Will jQuery throw an error when using off() for undefined event?

我正在使用 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'); 时,它只是 returns window 对象。那么我可以假设如果事件尚未绑定, off() 函数将不会抛出错误吗?我宁愿只使用 off() 并让它默默地失败,而不是在解除绑定之前必须循环遍历绑定的事件。

我需要这个才能在现代浏览器和 IE 9+ 上工作。

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

同样,调用 $(window).off() 将无错误地删除所有事件处理程序,即使 none 已被绑定。