我继承了一个使用jQuery 1.7.2的应用程序。
在整个应用程序中,我们有如下代码:
$('#quotation').off("click").on("click", function(){
// do something here...
}
现在,我确实理解上面没有问题。但是,偶尔在我们的代码中我会遇到这样的事情:
$('#continue').off("click.products").on("click.products", function(){
// do something here...
}
在整个应用程序中,我找到click.products
或click.orders
。似乎永远跟随.
可以是完全随机的文本。
click
和click.products
之间的区别是什么?
答案 0 :(得分:4)
此代码使用自己或插件定义的自定义命名空间事件。
事件名称可以由事件名称空间限定,以简化删除或触发事件。例如,“click.myPlugin.simple”定义了此特定click事件的myPlugin和简单命名空间。可以使用.off(“click.myPlugin”)或.off(“click.simple”)删除通过该字符串附加的单击事件处理程序,而不会干扰附加到元素的其他单击处理程序。命名空间类似于CSS类,因为它们不是分层的;只需要一个名称匹配。以下划线开头的命名空间保留供jQuery使用。
$('#a').on('click.bar', function() {
console.log('bar');
});
$('#a').on('click.foo', function() {
console.log('foo');
});
$('#b').click(function() {
$('#a').trigger('click.foo');
});
现在点击#a
时,两个点击处理程序(foo和bar)都会升起,
但是当点击#b
时,只会引发foo。