我有一個頁面上約300多個動作鏈接,到我(使用jQuery)的document.onready
事件觸發後連接處理程序:請問這個使用jQuery慢頁面顯示時間?
$('a.cmd').click (function() { ... do stuff ... });
是不是更有效地納入onclick
處理成HTML,而比在jQuery創建DOM元素之後附加它們要好嗎?
<a onclick="... do stuff ...">
我有一個頁面上約300多個動作鏈接,到我(使用jQuery)的document.onready
事件觸發後連接處理程序:請問這個使用jQuery慢頁面顯示時間?
$('a.cmd').click (function() { ... do stuff ... });
是不是更有效地納入onclick
處理成HTML,而比在jQuery創建DOM元素之後附加它們要好嗎?
<a onclick="... do stuff ...">
它會減慢速度嗎?是的綁定需要時間,無論它需要多少時間一些時間。但是,有一些方法可以真正改善您的情況。
它實際上是更好地在這裏使用一個.live()
或.delegate()
處理程序,所以你的初始綁定成本顯著少,像這樣:
$('a.cmd').live('click', function() { /* do stuff */ });
或者更好:
$(document.body).delegate('a.cmd', 'click', function() { /* do stuff */ });
在這兩種這些情況,而不是附加到每個DOM元素處理程序, 210事件處理程序到document
(或在第二個示例中爲<body>
)。這意味着該頁面的啓動成本顯着降低。
內聯事件處理程序肯定不會更高效本身。這兩種方法都會創建大量的偵聽器。
執行此操作的有效方法是使用.live()
或.delegate()
。
$('a.cmd').live('click', function() { /* do stuff */ });
如果您已經使用jQuery,幾乎從來沒有一個令人信服的理由使用內聯(在HTML)事件處理程序綁定。
哇,在一個頁面上的300個動作......出於好奇,這個頁面在做什麼? – Hollister 2010-12-07 14:49:26
一頁上最多50個項目*每個項目6個可能的操作... – 2010-12-09 07:36:13