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

jquery のドキュメントhttp://api.jquery.com/stop/に従って、clearInterval および jquery .stop() 関数を使用する必要があります。

また、jquery の状態と同様に、プロパティ $.fx.off を true に設定することで、アニメーションをグローバルに停止できます。これが完了すると、すべてのアニメーション メソッドは、効果を表示するのではなく、呼び出されるとすぐに要素を最終状態に設定します。

于 2013-08-29T18:12:03.137 に答える
1

clearInterval間隔とアニメーションを停止するには、(間隔 ID に対して) および.stop()(要素に対して)を使用する必要があります。

例えば:

clearInterval(blurb_scroll);
$(".content .blurb-container:first").stop();
于 2013-08-29T18:07:02.240 に答える
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);
  }
}());

これで、何が起こるかをより細かく制御できるようになり、コードにエラーが発生した場合でも、少なくともエラー コードが永久に実行され続けることはありません。エラーで停止した場合、新しいタイムアウトをスケジュールすることはありません。

setInterval. 良い考えではありません。

于 2013-08-29T18:12:41.860 に答える