[英]Performance difference between jQuery's .live('click', fn) and .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.