jQuery 使用多个分隔符按字母顺序排列命名空间

jQuery alphabetizes namespaces with multiple separators

提问人:Jimmy P 提问时间:10/21/2017 更新时间:10/21/2017 访问量:93

问:

$(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')

生成完全相同的输出:

不列颠哥伦比亚省

为什么会这样,我该如何预防?我正在使用 jQuery 1.7。

JavaScript jQuery 命名空间

评论

1赞 nnnnnn 10/21/2017
我相信正在创建两个不同的命名空间,并且,如果您尝试使用上述方法,您可以看到。如果你想要一个命名空间,你可以改用吗?a.b.cbc.trigger('a.c').trigger('a.b')b.cb-c

答:

2赞 Barmar 10/21/2017 #1

事件命名空间不嵌套。您将创建两个命名空间 、 和 ,这两个命名空间中都包含事件。顺序无关紧要,因此 jQuery 不会保留它。它将事件规范化,以便如果您为 定义处理程序,并且它识别它们实际上绑定了相同的事件,并且可以将它们放在其内部事件绑定数据中的同一条目中。bcaa.b.ca.c.b

评论

0赞 Barmar 10/21/2017
命名空间不嵌套。他们就像班级一样。阅读 jQuery 文档:api.jquery.com/on/#event-names