2015-04-21 49 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()); 
});