$(document).on('a.b.c', function(e) {
console.log(e.namespace)
}).trigger('a.b.c')
和
$(document).on('a.c.b', function(e) {
console.log(e.namespace)
}).trigger('a.c.b')
产生完全相同的输出:
b.c
为什么会这样,我该如何预防呢?我使用的是jQuery 1.7。
答案 0 :(得分:1)
事件名称空间没有嵌套。您正在创建两个名称空间b
和c
,其中包含两个名称空间a
。顺序并不重要,因此jQuery不会保留它。它规范化事件,以便在为a.b.c
和a.c.b
定义处理程序时,它会识别出它们实际上绑定了同一事件,并且可以将它们放在其内部事件绑定数据中的相同条目中。