【发布时间】:2014-08-03 17:30:04
【问题描述】:
假设一堆这样的事件处理程序:
$('.foo').on('bar.foo', function(e) {...})
它们仅用于为bar.foo 事件调用。不幸的是,它们也被调用 bar 事件,由我不知道的外部插件和库触发。
最简单的方法是:
$('.foo').on('bar.foo', function(e) {
if (!e.namespace) return
...
})
但问题是有很多事件处理程序。当仅触发bar 时,是否有任何其他可能性来阻止为bar.foo 调用这些事件处理程序?
编辑:在这种情况下,重命名 bar 事件不是解决方案。
【问题讨论】:
-
如果您不希望它们被其他
bar事件触发,为什么不使用不同的事件名称? -
因为我不能每次都更改一些外部库,我现在不使用我也已经使用的名称。我认为 jQuery 的这种行为有点烦人。
-
如果我理解你的问题(需要更好的例子),你不应该有
bar事件,如果你也使用bar事件命名空间。它与第一部分匹配。 -
我不使用没有命名空间的
bar事件。但是其他供应商的东西可以做到。问题是我无法想象可能被其他一些供应商使用的所有事件名称。而且它会让命名空间的想法变得毫无用处! -
使用一些前缀作为事件名称以避免与其他名称冲突。
标签: javascript jquery namespaces jquery-events