116

使用jQuery连接事件处理程序时,使用click方法有什么区别

$().click(fn)

与使用绑定方法相比

$().bind('click',fn);

除了绑定的可选数据参数。

4

7 回答 7

137

对于它的价值,来自jQuery 源代码

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
    "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

所以不,没有区别-

$().click(fn)

来电

$().bind('click',fn)
于 2009-02-06T01:30:37.367 回答
98

Matthew 的回答 +1,但我想我应该提一下,您还可以一次性绑定多个事件处理程序bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

这是更清洁的等价于:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
于 2009-02-06T07:35:32.980 回答
7

有一个不同之处在于您可以使用您拥有的第二种形式绑定自定义事件。否则,它们似乎是同义词。请参阅:jQuery 事件文档

于 2009-02-06T01:29:06.807 回答
1

绑定的 [data] 参数仅在绑定时出现一次。

您还可以将自定义事件指定为绑定的第一个参数。

于 2009-11-23T19:22:39.543 回答
1

我发现 .click() 更合乎逻辑,但我想这就是你的想法。

$('#my_button').click(function() { alert('BOOM!'); });

似乎就像你得到的一样简单。

于 2012-04-20T21:07:58.947 回答
0

如果你有谷歌浏览器,他们的开发者工具有一个事件监听器工具,选择你想要监视它的事件的元素。

你会发现尝试这两种方法会导致相同的结果,所以它们是等价的。

于 2010-02-10T17:05:27.797 回答
0

我更喜欢.bind() ,因为它与.live()的接口一致。它不仅使代码更具可读性,而且更容易更改一行代码以使用一种方法而不是另一种方法。

于 2011-09-09T15:27:10.537 回答