2013-09-10 2 views
0

Я искал через stackoverflow и различные другие сайты и, похоже, не могу получить ответ на эту дилемму.jquery loop не запускает функции jquery

Моя цель состоит в том, чтобы функции jQuery применялись к divs последовательно, используя массив с идентификаторами div.

У меня есть следующий код, который не работает по какой-то причине:

$(document).ready(function(){ 
    $('#click').click(function(){ 
     var layout_list = ['1','2','3','4','5','6','7','8','9','10']; 
     load_delay = 50; 
     for (i = 0; i < layout_list.length; i++) { 
      load_delay = load_delay+50; 
      setTimeout(function(){ 
       $("#l_"+layout_list[i]).css("visibility","visible"); 
       $("#l_"+layout_list[i]).addClass("bounceIn"); 
      },load_delay); 
     } 
    }); 
}); 
+1

Вам нужно использовать замыкание. – undefined

+0

Возможный дубликат [setTimeout в for-loop и передать i как значение] (http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value) – undefined

ответ

1

Вы должны использовать замыкание, например:

for (i = 0; i < layout_list.length; i++) { 
    load_delay = load_delay + 50; 
    (function (i) { 
     setTimeout(function() { 
      $("#l_" + layout_list[i]).css("visibility", "visible"); 
      $("#l_" + layout_list[i]).addClass("bounceIn"); 
     }, load_delay); 
    }(i)); 
} 
+0

Большое спасибо. Теперь я чувствую себя полным noob. У меня все работает. – 404notfound

Смежные вопросы