2013-12-23 45 views
0

當用戶向下滾動到頁面中的特定元素時,我試圖播放短廣告樣式的動畫。這個想法應該是在頁面的特定區域可見時連續循環,並且最好暫停它。jQuery中的循環功能元素是可見的

我至今是:

(function($){ 
    $.fn.splash = function() { 
    $(".lb").fadeIn("slow"); 
    $(".button").delay(200).fadeIn("slow"); 
    $(".t1").animate({left:"-=300"},1000); 
    $(".t2").delay(500).animate({left:"-=300"},1000); 
    $(".t3").delay(1000).animate({left:"-=300"},1000); 
    $(".t1").delay(2800).animate({left:"-=400"},400); 
    $(".t2").delay(2350).animate({left:"-=400"},400); 
    $(".t3").delay(1900).animate({left:"-=400"},400); 
    $(".t4").delay(3800).animate({left:"-=300"},1000); 
    $(".t5").delay(4000).animate({left:"-=300"},1000); 
    $(".t4").delay(3000).animate({left:"-=400"},400); 
    $(".t5").delay(2900).animate({left:"-=400"},400); 
    $(".t6").delay(7500).animate({left:"-=300"},1000); 
    $(".t7").delay(7700).animate({left:"-=300"},1000); 
    $(".t6").delay(3000).animate({left:"-=400"},400); 
    $(".t7").delay(2900).animate({left:"-=400"},400); 
    $(".t8").delay(11500).animate({left:"-=300"},1000); 
    $(".t8").delay(5000).animate({left:"-=400"},400); 
    $(".arrow").delay(12000).fadeIn(400); 
    $(".button").delay(11500).animate({top:"-=30"},700); 
    $(".arrow").delay(5000).animate({left:"-=400"},400); 
    $(".button").delay(4600).animate({left:"-=400"},400); 
    setTimeout(splash(), 18000); 
    }; 
})(jQuery); 


$(window).scroll(function() { 
    if ($('#splash').is(':visible')) { 
    $('#splash').splash(); 
    } 
}); 

這開始播放功能,當#splash DIV可見,但不循環了。我如何得到這個工作?

(這甚至奠定了這一切的動畫代碼的最佳方式是什麼?)

感謝

你想要的(代替75)
+0

在這種setTimeout的你不能只調用splash()並期望JS知道你想要調用它。 ';(this).splash();'或'$('#splash')。splash();'但不僅僅是'splash()'; – Popnoodles

回答

1
var Interval=''; 
$(window).scroll(function() { 

if ($('#splash').is(':visible')) { 
    clearInterval(Interval); 
    Interval = setTimeout(function(){ 
     if($('#splash').is(':visible'))$('#splash').splash(); 
     else clearInterval(Interval); 
    },75); 
    } 
}); 

設定的時間

+0

+1這更有意義,但仍然有一個調用splash()留在函數中會出錯。 – Popnoodles

+0

我嘗試過,但仍然沒有重複。我是否需要將setTimeout保留在splash函數中?如果是的話,它需要'setTimeout(「$(this).splash()」,18000);'? –