1

我需要能够在运行时停止 setInterval 函数。这个想法是,如果浏览器被调整大小,那么它将计时器(320px 或更小)这里是间隔:

var blurb_scroll = setInterval(function(){ 
        $(".content .blurb-container:first").next().css({'opacity':0}).delay(400).animate({'opacity':1}, 'fast');
        $(".content .blurb-container:first").animate({'margin-top':'-190px', 'opacity':'0'}, 'slow', function(){
            $(this).appendTo(blurb_container).removeAttr('style');
        });
    },6000);
4

4 回答 4

1

要停止间隔以及动画,您需要使用clearInterval(在间隔 id 上)和.stop()(在元素上)。

例如:

clearInterval(blurb_scroll);
$(".content .blurb-container:first").stop();
于 2013-08-29T18:07:02.240 回答
1

您应该根据 jquery 文档http://api.jquery.com/stop/使用 clearInterval 和 jquery .stop() 函数

同样如 jquery 所述,可以通过将属性 $.fx.off 设置为 true 来全局停止动画。完成此操作后,所有动画方法都会在调用时立即将元素设置为其最终状态,而不是显示效果。

于 2013-08-29T18:12:03.137 回答
1

您必须使用 clearInterval。将变量与您的 setInterval 作为全局变量,然后您可以在任何地方停止它。

<html>
<body>

<input type="text" id="clock">
<script language=javascript>
var int=self.setInterval(function(){clock()},1000);
function clock() {
  var d=new Date();
  var t=d.toLocaleTimeString();
  document.getElementById("clock").value=t;
  }
</script>
</form>
<button onclick="int=window.clearInterval(int)">Stop</button>

</body>
</html>

在这里您可以找到此示例以及有关 clearInterval 的更多信息。

希望能帮助到你!

于 2013-08-29T17:46:11.993 回答
0

与其清除 setInterval 间隔,不如开始使用 setTimeout:

(function runthis() {
  var f = $(".content .blurb-container:first")
  f.next()
   .css({'opacity':0})
   .delay(400)
   .animate({'opacity':1}, 'fast')
   .animate({'margin-top':'-190px', 'opacity':'0'}, 'slow', function(){
     $(this).appendTo(blurb_container).removeAttr('style');
   });
  if (conditional that says we should keep doing this) {
    setTimeout(runthis, 6000);
  }
}());

现在你可以更好地控制发生的事情,如果你的代码有错误,至少它不会永远运行你的错误代码。如果它因错误而死,您永远不会安排新的超时。

设置间隔。只是不是一个好主意。

于 2013-08-29T18:12:41.860 回答