$(".anything").click()和$(".anything").bind(click)有什么区别?

3
"

$(".anything").click()和$(".anything").bind(click)之间的区别是什么?

"
$(".anything").click(function() {

});

$(".anything").bind('click', function() {

});

".bind("click", ...)" 应该是一个字符串。 - jwueller
4个回答

8

其实,click(function() { })只是bind("click", function() { })的快捷方式。

根据jQuery文档:

jQuery库提供了绑定标准事件类型的快捷方法,如使用 .click() 来代替 .bind('click')

你可以在这里阅读更多关于bind()的内容


6

第一个是第二个的快捷方式。第二个实际上是错误的,click应该被引用。此外,在第二个中,您还可以通过空格将同一函数绑定到多个事件,这样可以获得额外的好处。例如:

$(".anything").bind("click keypress blur", function() {

});

4
在这种特定情况下,完全没有任何作用。
但是:
A)如果您不给.click()传递参数,它会触发事件而不是设置处理程序。
B)只有.bind()允许您使用“命名空间”方式注册处理程序:
$(whatever).bind('click.myEvent', function (e) { ... });
$(whatever).unbind('click.myEvent'); // Removes just that handler

2
请看这篇文章,它指向了JQuery源代码,以展示.click(fn)只是调用了.bind('click', fn):jQuery: $().click(fn) vs. $().bind('click',fn); 通常我只在以下情况下使用后者:
- 我想绑定多个事件,例如.bind('click focus', fn) - 仅为了保持一致性,如果我稍后调用unbind的话,例如:
var fn = function() { alert('foo'); }
$('#foo').bind('click', fn);

...

$('#foo').unbind('click', fn);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接