那么,他们是什么?
我的意思是,我知道有名字空间 - 但是如果我的事件名称太明显了,那就说submit
,那么只添加名称空间submit.myns
并不会阻止在标准{{1}时触发它触发了。
好的,我知道,submit
是一个非常糟糕的例子,但如果我想使用与我正在使用的某个插件相同的名称?当我有大型网站,有很多自定义事件和大量插件时,这可能是一个问题,特别是如果我想保持事件名称简单而有意义。
那么你使用某种约定,比如前缀/后缀(如submit
/ myns:event
)吗?或者也许我太担心,我的担忧是没有根据的?
编辑:
命名空间很棒,如果你必须对有界事件进行分组以便轻松解除绑定。但它的工作方式,无法确保处理程序myns_event
仅由click.my
触发。为此,我们必须将它命名为不同,例如click.my
- 然后我们保留有意义的名称,我们知道它是我们的事件(并且不太可能有人使用它),我们仍然可以从标准中受益事件命名空间。
有些代码可以看到差异:http://jsfiddle.net/h2kuN/1/
答案 0 :(得分:9)
命名空间解决了这个问题 - 但只有在每个人都使用它时。
您可以为季节性插件绑定并触发christmas.adam
,我可以绑定并触发christmas.bennett
,我们不会干涉。但如果有人出现并触发christmas
,那么我们的插件都会被触发。
这是因为如果将处理程序绑定到event.namespace
,则触发event
将触发您的处理程序。这在jQuery API文档中并不清楚,但从jQuery 1.7.1开始就是如此。
所以(除了可以轻松地同时取消绑定多个处理程序之外),命名空间用于保护其他代码,而不是你的代码。