2013-01-24 63 views
0

我有一個充滿AJAX的網站,所以我需要委託方法來記錄點擊,假設我也有jQuery庫。
我只是想知道什麼是這兩個代碼之間更高效:委派方法時效率更高嗎?

$(document).on('click', '.delegate1', function(){ 
    doSomethingForDelegate1(); 
}).on('click', '.delegate2', function(){ 
    doSomethingForDelegate2(); 
}); 

或者:

$(document).on('click', function(event){ 
    var element = $(event.target); 
    if(element.hasClass('delegate1')){ 
     doSomethingForDelegate1(); 
    } else if(element.hasClass('delegate2')){ 
     doSomethingForDelegate2(); 
    } 
}) 

我想要實現,將會對客戶的執行時間的影響較小,因此有一個代碼更快的網站。我知道也許差異不會太大,但工作速度總是更快;)

如果有一種方法比這兩種方法更快,那也是很受歡迎的。謝謝。

如果差異不夠明顯,那麼我想知道algorythm是乾淨的,爲每個委託綁定事件或綁定單個事件並比較類。

+0

幾乎沒有區別。至少,你不會注意到該網站合理地變得更快。 – Bergi

+1

綁定每個處理程序儘可能靠近目標,而不是「文檔」。 –

+0

也許這是真的,那麼我想知道什麼algaorythm被認爲更清潔。我在編輯這個問題。 – kevLinK

回答

0

當稍後添加到DOM中的元素很多時,第二種方法可能很有效。因此,將單個事件附加到文檔並進行委託可以真正加快應用程序的速度。

但是,如果創建,需要進行附加元件的數量並不大,兩者都應該以相同的速度進行..

我會第一次去的辦法,因爲它是很多更清潔。

+0

在第一個例子中,'document'上只有一個事件。不同之處在於JQuery在內部檢查目標元素。 – monshq

+0

我還認爲單個事件綁定會更快,假設我可以有100多個代表(搜索結果)。至少有人給出了一個更合理的答案,說明相反,我認爲這是最好的答案。謝謝。 – kevLinK