jQuery:$()。click(fn)与$()。bind('click',fn);


Answers:


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)

6
正确- click()基本上是bind('click')(或者,在当今时代,它实际上是调用的简写on('click')。按照我的方式,您最好on('click')直接使用它来节省额外的函数调用。)
Nix 2012年

它们执行相同的操作,但bind()让您说,当用户将鼠标悬停并单击时,我希望发生一些事情。有关示例,请参见下面的stackoverflow.com/a/519455/292408。当然,您只能绑定一个事件,例如“单击”。
伊利亚·林恩

98

+1为Matthew的答案,但我想我应该提到的是,您还可以使用以下命令一次性绑定多个事件处理程序 bind

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

这更清洁等效于:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;

20
+1绑定多个事件对我来说是个新闻,可能非常有用。
cletus


1

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

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


1

我发现.click()更合乎逻辑,但我想这就是您对事物的看法。

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

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


0

如果您使用的是Google Chrome浏览器,那么他们的开发人员工具将使用事件侦听器工具,然后选择要监视其事件的元素。

您会发现,尝试这两种方法均会得到相同的结果,因此它们是等效的。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.