У меня проблема с загрузкой с использованием нескольких привязок 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
);
});