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

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

$().click(fn) 

与使用绑定方法相比

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

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

从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) 

马修的回答+1,但我想我应该提到,你也可以绑定多个事件处理程序一次性使用bind

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

这是更清洁相当于:

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

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

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

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

我发现.click()更合乎逻辑,但我想这是你如何看待事物。

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

看起来像你一样简单。

如果你有Google Chrome,他们的开发者工具有一个事件监听器工具,select你想侦察它的事件的元素。

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

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