元素可见时在jQuery中循环函数
当用户向下滚动到页面中的特定元素时,我尝试播放一个简短的广告式动画。这样做的想法是在页面的特定区域可见时不断循环,最好在不可见时暂停 到目前为止,我得到的是:元素可见时在jQuery中循环函数,jquery,jquery-animate,Jquery,Jquery Animate,当用户向下滚动到页面中的特定元素时,我尝试播放一个简短的广告式动画。这样做的想法是在页面的特定区域可见时不断循环,最好在不可见时暂停 到目前为止,我得到的是: (function( $ ){ $.fn.splash = function() { $(".lb").fadeIn("slow"); $(".button").delay(200).fadeIn("slow"); $(".t1").animate({left:"-=300"},1000); $(".
(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)+1这更有意义,但函数中仍有一个对splash()的调用将出错。我尝试过,但仍然没有重复。我是否需要在splash函数中保留setTimeout?如果是这样的话,它需要是
setTimeout($(this).splash()”,18000)代码>?在setTimeout中,您不能只调用splash()并期望JS知道您要调用它的内容<代码>$(this.splash()代码>或$('#splash')。splash()代码>而不仅仅是splash()
;
var Interval='';
$(window).scroll(function() {
if ($('#splash').is(':visible')) {
clearInterval(Interval);
Interval = setTimeout(function(){
if($('#splash').is(':visible'))$('#splash').splash();
else clearInterval(Interval);
},75);
}
});