clearinterval幻灯片无法正常工作

时间:2015-02-23 18:09:55

标签: javascript jquery

我在照片的幻灯片放映中有一些问题需要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>

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

clearInterval不会取消使用jQuery的.delay()函数延迟的任何事件。您无法在此处阅读这些事件(.delay())。

  

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。

查看你的代码,对setInterval的调用完全没有做任何事情,因为你已经给它们超时0ms。

如果你想让这些事件中的每一个都可以取消,那么setTimeout和clearTimeout可能是你最好的选择(或者setInterval但它是moderately evil),但是你将无法将所有这些事物链接在一起,这也可能是帮助您的代码更清晰。