繁体   English   中英

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

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

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

$().click(fn)

与使用绑定方法

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

除了bind的可选数据参数。

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)

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

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

这是更清洁相当于:

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

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

我发现.click()更合乎逻辑,但我想你是怎么想的。

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

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

bind的[data]参数只在绑定时发生一次。

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

如果您使用谷歌浏览器,他们的开发人员工具有一个事件监听工具,请选择您要监视其活动的元素。

您会发现尝试两种方式会产生相同的结果,因此它们是等效的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM