3

我继承了一个使用 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。看起来后面的内容.可以是完全随机的文本。

click和 和有什么不一样click.products

4

1 回答 1

4

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

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

on文档

现场演示

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

于 2012-06-10T09:54:04.123 回答