gpt4 book ai didi

javascript - 如何避免在未定义命名空间时调用事件处理程序

转载 作者:行者123 更新时间:2023-11-28 08:11:09 26 4
gpt4 key购买 nike

假设有一堆像这样的事件处理程序:

$('.foo').on('bar.foo', function(e) {...})

它们仅在 bar.foo 事件中被调用。不幸的是,它们也被调用 bar 事件,由我不知道的外部插件和库触发。

最简单的方法是:

$('.foo').on('bar.foo', function(e) {
if (!e.namespace) return
...
})

但问题是有很多事件处理程序。当仅触发 bar 时,是否有任何其他可能性可以阻止调用 bar.foo 的这些事件处理程序?

编辑:重命名 bar 事件在这种情况下不是解决方案。

最佳答案

事件命名空间主要用作帮助器,以轻松解除特定匿名回调的绑定(bind)。

$( body ).on( 'click', function() {
console.log( 'Default click on body' );
});

$( body ).on( 'click.myCustomPluginNamespace', function() {
console.log( 'Custom plugin click on body' );
});

// On plugin cleanup, to leave the default binding intact.
$( body ).off( 'click.myCustomPluginNamespace' );

如果没有,您将需要保存对自定义监听器函数的引用,即:

  1. 写起来很乏味
  2. 对垃圾收集器不太友好,因为当监听器取消注册时,这些垃圾收集器仍会保留在内存中。

关于javascript - 如何避免在未定义命名空间时调用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com