Помогите оптимизировать этот код
$(document).ready(function(){ var items = $(".item") //items = items.children //alert(items.length) for(var i = 1; i < items.length + 1; i++) { (function(i){ var stock_timer = setInterval(function(){ var days = $("#days_" + i).text() var hours = $("#hours_" + i).text() var minutes = $("#mins_" + i).text() var seconds = $("#secs_" + i).text() if(seconds <= 0) { minutes = minutes - 1 if( minutes <= 10) { $("#mins_" + i).text("0" + minutes) } else { $("#mins_" + i).text(minutes) } if(minutes <= 0) { hours = hours - 1 if(hours < 10) { $("#hours_" + i).text("0" + hours); } else { $("#hours_" + i).text("0" + hours); } minutes = 59; $("#mins_" + i).text(minutes) } if(hours <= 0) { days = days - 1 $("#days_" + i).text(days) hours = 24; $("#hours_" + i).text(hours) } seconds = 59; $("#secs_" + i).text(seconds) } else { seconds = seconds - 1; if( seconds < 10) { $("#secs_" + i).text("0" + seconds) } else { $("#secs_" + i).text(seconds) } } if(seconds <= 0 && minutes <= 0 && hours <= 0 && days <= 0) { clearInterval(stock_timer); $("#timer_" + i).hide(function(){ $(this).text("Акция закончилась"); $(this).show(5000); }) } }, 1000) }(i)) } }); Скажите пожалуйста достаточно-ли этот кода быстродействинен??? таким способом я запускаю таймер для каждого элемента перерыл кучу скриптов в инете, что-то долго мучался, решил это написать, но теперь переживаю что код недостаточно хорош, есть какой-нибудь способ ускорить выполнение этого кода?? если кто может предложить лучше вариант, но тока с этим кодом буду благодарен!!! |
поменьше $. вообще, они должны встречаться только в одном месте - в начале, где они ищут элементы и сохраняют их в переменных.
заместо поиска элементов заново кешируйте их в переменных. |
Извините, но что такое "заного кешируйте их в переменных"??, я непонял честно, я незнаю как кешировать переменные, обьясните пожалуйста или покажите, мне-же ведь нужно постоянно подставлять значения, как сделать поменьше $. ??
|
кэш это прием позволяющий запоминать результат вычислений чтобы избегать повторных вычислений, при том что результат один и тот же.
$() делает поиск по селекторам, а это вычисления. Если один раз найти, и положитьв переменную, а потом уже обращаться к переменной то поиска происходить уже не будет, в переменной сразу будет лежать ссылка на область в памяти которая нам нужна. Суть в том чтобы класть результат функции $() в какую нить переменную а потом работать с этой переменной. для совсем маленьких напишу пример var q = $('#fdf') и теперь работаем через q q.css() и.т.п. |
Часовой пояс GMT +3, время: 17:24. |