2012-06-10 52 views
3

我继承了一个使用jQuery 1.7.2的应用程序。在jQuery 1.7.2 on(“click”)和on(“click.randomText”)之间有什么区别?

在整个应用程序,我们有像代码如下:

$('#quotation').off("click").on("click", function(){ 
    // do something here... 
} 

现在,我明白了以上没有问题。然而,occasionaly在我们的代码中,我遇到过这样的事情:

$('#continue').off("click.products").on("click.products", function(){ 
    // do something here... 
} 

纵观我发现click.productsclick.orders应用。看来以下.可以完全随机文本。

clickclick.products有什么区别?

回答

4

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

事件名称可以通过简化删除或触发事件的事件名称空间进行限定。例如,“click.myPlugin.simple”为此特定点击事件定义了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将提高。

+0

那么,点击是不是再指向点击事件? – Jason

+0

如果'click.xxx'不再是'click'事件,那么点击控件时,内部函数仍然会执行?它还必须以某种方式引用'click'事件? – Jason

+0

+1用于指出文件的方式。我从来没有想过要检查文档,因为我假定以前的开发人员已经做了一些与'on()'无关的自定义功能。我想我现在明白了。非常感谢您的快速回答。 (尝试+1,但还不能,只有15代表,对不起,对不起,将回来虽然15达到:)) – Jason

相关问题