我在照片的幻灯片放映中有一些问题需要clearInterval。我一直在阅读很多,但我发现没有什么可以帮助我。这是我的代码:
<script> //under are my pictures sliding every 6 seconds (working well)
$(document).ready(function(){
var interval1= setInterval (function(){$('#imgvoy1').show(0).delay(36000);
},0);
var interval2 = setInterval (function(){
$('#imgvoy2').hide(0).delay(5000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(24000)
},0);
var interval3 = setInterval (function(){
$('#imgvoy3').hide(0).delay(11000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(18000)
},10);
var interval4 = setInterval (function(){
$('#imgvoy4').hide(0).delay(17000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(12000)
},0);
var interval5 = setInterval (function(){
$('#imgvoy5').hide(0).delay(23000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(6000)
},0);
var interval6 = setInterval (function(){
$('#imgvoy6').hide(0).delay(29000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(0)
},0);
// and here is my code to make the slideshow stop when you click on #imagesprecsuiv element. Unfortunately, it does not work!
$('#imagesprecsuiv').click(function(){
clearInterval(interval1);
clearInterval(interval2);
clearInterval(interval3)
clearInterval(interval4);
clearInterval(interval5);
clearInterval(interval6)
});
</script>
提前感谢您的帮助!
答案 0 :(得分:0)
clearInterval不会取消使用jQuery的.delay()函数延迟的任何事件。您无法在此处阅读这些事件(.delay())。
.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。
查看你的代码,对setInterval的调用完全没有做任何事情,因为你已经给它们超时0ms。
如果你想让这些事件中的每一个都可以取消,那么setTimeout和clearTimeout可能是你最好的选择(或者setInterval但它是moderately evil),但是你将无法将所有这些事物链接在一起,这也可能是帮助您的代码更清晰。