2011-10-19 14 views
0

私のjQueryコードに若干の問題があります。 私は基本的に、setIntervalにある一連の画像をループするタイマーを持っています。jQuery setInterval&setTimeout

右または左のコントローラーをクリックすると、自動的にではなくユーザーのクリックに基づいて間隔が停止し、画像がフェードします。

$('a.right').click(function() { 

    clearInterval(myInterval); 
    setTimeout(function() { slideshow(); }, 9000); 

    if (count < max - 1) { 
     $('div.feature-image').eq(count).fadeOut('1000', function() { 

      count++; 
      $('div.feature-image').eq(count).fadeIn('1000'); 
      info++; 
      $('div.img-info').html(info + ' of ' + max + ' | '); 


     }) 

    } 

setTimeoutを使用して4秒間待ってから、ループサイクルを続行しました。 Jqueryがifステートメントを停止することを知らないので、これを行うのが最もエレガントな方法ではないと思います。私はsetTimeout上でできることは、if文がその関数を実行するのを止めるか?

+0

setIntervalコードはどのように見えますか?あなたが何を意味するのか_Jqueryはifステートメントを停止することを知らない_ – mplungjan

+0

これを読んでください:http://www.w3schools.com/jquery/jquery_effects.asp – linguini

答えて

0

ないは確かに私はこの問題を完全に理解したが、どのようなもちろん、この

setTimeout(function() { 
    setTimeoutTriggered = true; 
    slideshow(); 
}, 9000); 

if ((count < max - 1) && !setTimeoutTriggered) { 
    ... 
} 

のようなものについて、あなたはより多くのセマンティック名をsetTimeoutTriggered与えることができます。 グローバル変数を避ける方が良いでしょう:)

とにかく、このjQueryプラグインはタイムアウトと間隔を管理するのに本当に便利です! http://plugins.jquery.com/project/timers

関連する問題