2015-04-21 97 views
0

我想獲得$(window).scroll使用.visible()在第二個元素上觸發。但是,如果我像下面所做的那樣編寫它,或者甚至將它們放在單獨的代碼塊中,哪一個在頂部觸發,而在底部則不是。看起來window.scroll仍然在等待第一個事件發生並且忽略第二個事件?jquery無法觸發第二個滾動事件

//*********************************************************** 
     // TEST ELEMENTS ARE IN VIEWPORT 
     //*********************************************************** 
     $(window).scroll(function(){ 
      if ($("#moreSection").visible(true)){ 
       $(".slideInLeft").delay(400).show("slide", { direction: "right", easing: 'easeOutBounce'}, 400); 
      }else if($("#why-use-section").visible(true)) { 
       $(".slideInLeft2").delay(400).show("slide", { direction: "right", easing: 'easeOutBounce'}, 1600); 
      } 

     }); 
+0

你就可以生產的jsfiddle? – Razorphyn

+0

嗨,以及im使用.visible()來測試它是否已經在視口中。謝謝:) – user3358014

+1

第二個事件,你的意思是'else if'語句中的#why-use-section元素嗎?如果你想要在#moreSection上滾動滾動,將'else if'轉換爲常規的'if' –

回答

0

可能不是正確的解決方案,但在此基礎上:Wait till a Function with animations is finished until running another Function

function ScrollOne(){ 
    if ($("#moreSection").visible(true)) 
     $(".slideInLeft").delay(400).show("slide", { direction: "right", easing: 'easeOutBounce'}, 400); 
} 

function ScrollTwo(){ 
    if($("#why-use-section").visible(true)) { 
     $(".slideInLeft2").delay(400).show("slide", { direction: "right", easing: 'easeOutBounce'}, 1600); 
} 

$(window).scroll(function(){ 
    ScrollOne().done(ScrollTwo()); 
});