在jQuery 1.7.2中,on(“click”)和on(“click.randomText”)之间有什么区别?

时间:2012-06-10 09:51:44

标签: jquery namespaces jquery-on

我继承了一个使用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.productsclick.orders。似乎永远跟随.可以是完全随机的文本。

clickclick.products之间的区别是什么?

1 个答案:

答案 0 :(得分:4)

此代码使用自己或插件定义的自定义命名空间事件。

  

事件名称可以由事件名称空间限定,以简化删除或触发事件。例如,“click.myPlugin.simple”定义了此特定click事件的myPlugin和简单命名空间。可以使用.off(“click.myPlugin”)或.off(“click.simple”)删除通过该字符串附加的单击事件处理程序,而不会干扰附加到元素的其他单击处理程序。命名空间类似于CSS类,因为它们不是分层的;只需要一个名称匹配。以下划线开头的命名空间保留供jQuery使用。

on docs

Live DEMO

$('#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。