簡體   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