jQuery:$().click(fn)vs. $().bind('click',fn);

Ala*_*orm 114 javascript jquery event-handling

当使用jQuery连接事件处理程序时,使用click方法之间是否有任何区别

$().click(fn)
Run Code Online (Sandbox Code Playgroud)

与使用绑定方法

$().bind('click',fn);
Run Code Online (Sandbox Code Playgroud)

除了bind的可选数据参数.

Mat*_*las 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);
    };
});
Run Code Online (Sandbox Code Playgroud)

所以不,没有区别 -

$().click(fn)
Run Code Online (Sandbox Code Playgroud)

电话

$().bind('click',fn)
Run Code Online (Sandbox Code Playgroud)

  • 是的 - "click()"基本上是`bind('click')`的缩写(或者,在这个时代,它实际上称为'on('click')`.我看到它的方式,你也可能通过直接使用`on('click')`来节省额外的函数调用. (6认同)

nic*_*ckf 97

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

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});
Run Code Online (Sandbox Code Playgroud)

这是更清洁相当于:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
Run Code Online (Sandbox Code Playgroud)

  • +1绑定多个事件对我来说是新闻,可能非常有用. (20认同)

nic*_*hrn 7

有一个区别在于您可以使用您拥有的第二个表单绑定自定义事件.否则,它们似乎是同义词.请参阅:jQuery Event Docs