Javascript jquery启动一系列模拟单击,必要时停止
我有一个链接,当用户想要“开始”导游时,可以单击该链接。它所做的是使用设置超时来模拟一系列点击——几乎就像幻灯片(它是一个单页网站) 但是,当用户单击其中一个手动导航链接时,我希望此自动导游停止。有什么建议吗 /编辑:这就是我需要的工作方式 我需要Javascript jquery启动一系列模拟单击,必要时停止,javascript,jquery,Javascript,Jquery,我有一个链接,当用户想要“开始”导游时,可以单击该链接。它所做的是使用设置超时来模拟一系列点击——几乎就像幻灯片(它是一个单页网站) 但是,当用户单击其中一个手动导航链接时,我希望此自动导游停止。有什么建议吗 /编辑:这就是我需要的工作方式 我需要。单击()#导航a,然后在5秒钟后立即。单击()#导航b,依此类推(一直到#导航e) 当用户单击#stop时,它将停止自动。单击() 当用户再次单击#start时,它将从#nav_a重新开始。添加一个透明的掩码div,当用户单击时,您可以捕获事件并停止
。单击()
#导航a
,然后在5秒钟后立即。单击()
#导航b
,依此类推(一直到#导航e
)
当用户单击#stop
时,它将停止自动。单击()
当用户再次单击#start
时,它将从#nav_a
重新开始。添加一个透明的掩码div,当用户单击时,您可以捕获事件并停止设置超时
我使幻灯片放映循环,但如果您愿意,可以让它在结尾处停止。基本逻辑是单击幻灯片时,我t取消自动播放
<div class="slides">
<div class="slide">[ content ]</div>
<div class="slide">[ content ]</div>
<div class="slide">[ content ]</div>
</div>
<script>
var stopSlideshow = false,
slideTimeout = null,
slideTime = 5000, // 5 seconds
doSlide = function($slide) {
$('.slide').not($slide).hide(); // hide all but current slide
$slide.show(); // show current slide
$slide = ($slide.next().length) ? $slide.next() : $('.slide:first');
if (!stopSlideshow) { // automatically keeps going if slide show not stopped
slideTimeout = window.setTimeout(function(){doSlide($slide);}, slideTime);
}
};
$('.slide').bind('click',function(ev){
stopSlideshow = true; // set flag
window.clearTimeout(slideTimeout); // stop timeout
$('.slide').unbind(); // cancel slide click
});
doSlide($('.slide:first')); // start wizard
</script>
[内容]
[内容]
[内容]
var stopSlideshow=false,
slideTimeout=null,
slideTime=5000,//5秒
doSlide=函数($slide){
$('.slide')。不是($slide.hide();//隐藏除当前幻灯片以外的所有幻灯片
$slide.show();//显示当前幻灯片
$slide=($slide.next().length)?$slide.next():$('.slide:first');
如果(!stopSlideshow){//如果幻灯片放映未停止,则自动继续
slideTimeout=window.setTimeout(函数(){doSlide($slide);},slideTime);
}
};
$('.slide').bind('click',函数(ev){
stopSlideshow=true;//设置标志
window.clearTimeout(slideTimeout);//停止超时
$('.slide').unbind();//取消幻灯片单击
});
doSlide($('.slide:first');//启动向导
使用clearTimeout
/clearInterval
。我更喜欢setTimeout/clearTimeout,这样超时会产生另一个超时,因为你可以很容易地传递一个超时产生另一个超时的上下文,这会在你明确的时候导致更负责任的编程。既然我产生了新的setTimeout,我如何才能设置一个单击“停止”时是否清除?