我遇到了使用多個jQuery綁定幾千個元素和輸入的加載速度問題,有沒有更高效的方法來做到這一點?jQuery綁定效率
該網站能夠通過ajax調用在產品列表之間切換,頁面無法刷新。有些清單有10個項目,大約有100個,大約有2000多個。當我開始在清單之間翻轉時,速度問題就出現了。每次加載2000+項目列表時,系統拖動約10秒鐘。
在重建列表之前,我將目標元素的html設置爲'',並解除綁定下面的兩個綁定。我確信它與我在回調中所做的所有父母,下一個和子女電話有關。任何幫助深表感謝。
環路2500倍
<ul>
<li><input type="text" class="product-code" /></li>
<li>PROD-CODE</li>
...
<li>PRICE</li>
</ul>
末環
$('li.product-code').bind('click', function(event){
selector = '#p-'+ $(this).prev('li').children('input').attr('lm');
$(selector).val(
($(selector).val() == '' ? 1 : (parseFloat($(selector).val()) + 1))
);
Remote.Cart.lastProduct = selector;
Remote.Cart.Products.Push(
Remote.Cart.customerKey,
{
code : $(this).prev('li').children('input').attr('code'),
title : $(this).next('li').html(),
quantity : $('#p-'+ $(this).prev('li').children('input').attr('lm')).val(),
price : $(this).prev('li').children('input').attr('price'),
weight : $(this).prev('li').children('input').attr('weight'),
taxable : $(this).prev('li').children('input').attr('taxable'),
productId : $(this).prev('li').children('input').attr('productId'),
links : $(this).prev('li').children('input').attr('productLinks')
},
'#p-'+ $(this).prev('li').children('input').attr('lm'),
false,
(parseFloat($(selector).val()) - 1)
);
return false;
});
$('input.product-qty').bind('keyup', function(){
Remote.Cart.lastProduct = '#p-'+ $(this).attr('lm');
Remote.Cart.Products.Push(
Remote.Cart.customerKey,
{
code : $(this).attr('code') ,
title : $(this).parent().next('li').next('li').html(),
quantity : $(this).val(),
price : $(this).attr('price'),
weight : $(this).attr('weight'),
taxable : $(this).attr('taxable'),
productId : $(this).attr('productId'),
links : $(this).attr('productLinks')
},
'#p-'+ $(this).attr('lm'),
false,
previousValue
);
});
現場是贏家!現在我唯一的速度掛斷是我下載的一個非右鍵單擊插件。如果沒有綁定,創建列表是瞬間的,現在是約半秒。隨着無右鍵單擊腳本掛起,但這是由於我想象的綁定。非常感謝! – clownshoes 2010-03-19 20:34:27
@chelfers - 你正在使用哪個沒有右鍵點擊的插件?這應該也很容易切換到'.live()'並且立即獲得所有的代碼......如果你沒有在這裏做過這個回覆,我會去看看。 – 2010-05-24 00:52:41
'委託()'是絕對要走的路。當您想要捕捉哪些事件的數千個元素時,它比替代方案更加優化。唯一需要注意的是它需要jQuery 1.4。 – 2010-08-24 12:56:22