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