2010-12-07 24 views
2

我有一個頁面上約300多個動作鏈接,到我(使用jQuery)的document.onready事件觸發後連接處理程序:請問這個使用jQuery慢頁面顯示時間?

$('a.cmd').click (function() { ... do stuff ... }); 

是不是更有效地納入onclick處理成HTML,而比在jQuery創建DOM元素之後附加它們要好嗎?

<a onclick="... do stuff ..."> 
+0

哇,在一個頁面上的300個動作......出於好奇,這個頁面在做什麼? – Hollister 2010-12-07 14:49:26

+0

一頁上最多50個項目*每個項目6個可能的操作... – 2010-12-09 07:36:13

回答

5

它會減慢速度嗎?是的綁定需要時間,無論它需要多少時間一些時間。但是,有一些方法可以真正改善您的情況。

它實際上是更好地在這裏使用一個.live().delegate()處理程序,所以你的初始綁定成本顯著少,像這樣:

$('a.cmd').live('click', function() { /* do stuff */ }); 

或者更好:

$(document.body).delegate('a.cmd', 'click', function() { /* do stuff */ }); 

在這兩種這些情況,而不是附加到每個DOM元素處理程序, 210事件處理程序到document(或在第二個示例中爲<body>)。這意味着該頁面的啓動成本顯着降低。

2

內聯事件處理程序肯定不會更高效本身。這兩種方法都會創建大量的偵聽器。

執行此操作的有效方法是使用.live().delegate()

$('a.cmd').live('click', function() { /* do stuff */ }); 

如果您已經使用jQuery,幾乎從來沒有一個令人信服的理由使用內聯(在HTML)事件處理程序綁定。

相關問題