2009-07-02 10 views
2

以下のようなJquery時間遅延フェーダーを使用していますが、コード内のイベントに基づいて再初期化する必要があります。つまり、タイマーをゼロに戻します。これはどうすればいいですか?私はfader()をもう一度呼び出そうとしました。jQuery遅延関数を再初期化する方法

function fader(){ 

$(ajdiv).delay(10000, function(){$(ajdiv).fadeOut()}); 

} 
jQuery.fn.delay = function(time,func){ //run a delayed function 

return this.each(function(){ 

    setTimeout(func,time); 

}); 

}; 

答えて

1

setTimeoutから返されたtimeoutIDを保存する必要があります。 window.clearTimeout(timeoutID)を呼び出してタイマーを削除し、イベントの発生を停止することができます。後で "リセット"する場合は、新しいものを作成する必要があります。

モザイアdocumentation for setTimeout

this questionもチェックしてください。同じ問題があると思うと、より洗練された解決策が得られます。

+0

ありがとう! :Dこれが他のブラウザでも動作するかどうか知っていますか? – user132192

+0

はい、すべての市長のブラウザでサポートされています。 –

1

この私が使用した私の実際のコードは、(それが私のカスタム遅延関数に与えられた時間放置滞在から新しい要素のスライドを作成し、その後、再び消える)です:

$element.next().next().hide().show('slide', {direction : 'left'}, 700, function() {$(this).delay(10000, function() {$element.next().next().hide('slide', {direction: 'left'}, 700)})}); 
関連する問題