Помогите оптимизировать этот код
$(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, время: 11:25. |