2014-05-01 118 views
-2

我一直試圖遍歷每個部分中的一組列表項只有一次。也就是說,在滾動到特定的部分時,我想要一組列表項來迭代一次。這不應該重複持續滾動。jQuery - 在嵌套的每個循環中僅迭代一次

我寫的代碼遍歷每個部分以及部分中的每個列表項,但它會在每個滾動條上繼續。

我想這隻遍歷每個部分一次。

$(window).scroll(function(){ 
      var windscroll = $(window).scrollTop(); 
      $('body section').each(function(e){ 
      if($(this).position().top < windscroll){ 
       $(this).find(".inner-skills li").each(function(i){ 
       $(this).delay(i*500).animate({ 
       "width":"200px", 
       "opacity":1 
       },500); 

       }); 
      } 
      }) 
     }); 

回答

0

你需要unbind它:

$(window).scroll(function(){ 
    var windscroll = $(window).scrollTop(); 
    $('body section').each(function(e){ 
     if($(this).position().top < windscroll){ 
     $(this).find(".inner-skills li").each(function(i){ 
      $(this).delay(i*500).animate({ 
       "width":"200px", 
       "opacity":1 
      },500); 
     }); 
     } 
    }) 
    $(window).unbind('scroll'); 
}); 

編輯:

$(window).scroll(function(){ 
    var windscroll = $(window).scrollTop(); 
    $('body section').not('.completed').each(function(e){ //Loop through all sections WITHOUT class of completed 
     if($(this).position().top < windscroll){ 
     $(this).find(".inner-skills li").each(function(i){ 
      $(this).delay(i*500).animate({ 
       "width":"200px", 
       "opacity":1 
      },500); 
     }); 
     $(this).addClass('completed'); // add class of completed so it wont loop through this anymore 
     } 
    }) 
}); 
+0

這是行不通的。在解除綁定時,沒有任何部分被迭代。我的代碼的問題是,即使在完成動畫時,滾動事件也會被觸發,這將是不必要的計算。我只想遍歷每個部分一次。每個部分都有一組列表項,這些列表項只能迭代一次! –

+0

瞭解現在,將編輯。 –

+0

根據您評論的新理解編輯答案。請現在嘗試:) –

1

您可以使用一個變量來檢查,如果你已經滾動或不

試試這個:

var already_scrolled = 0; 
$(window).scroll(function(){ 
     if(already_scrolled == 0){ 
     already_scrolled = 1; 
     var windscroll = $(window).scrollTop(); 
     $('body section').each(function(e){ 
      if($(this).position().top < windscroll){ 
       $(this).find(".inner-skills li").each(function(i){ 
       $(this).delay(i*500).animate({ 
        "width":"200px", 
        "opacity":1 
       },500); 

       }); 
      } 
     }) 
     } 
    }); 
+0

非常酷!我不知道.each()有一個內置的計數器。 –

+0

_I我希望這隻能遍歷每個部分只有一次._ - 這隻會到達第一部分,不會遍歷它們一次... –

+0

這樣做會發生什麼,我只能通過第一部分進行迭代!之後沒有。 –