2016-03-30 6 views
0

私の質問はthis質問を参照しています。JQuery mousdown with setInterval endless

現時点ではthis answerを使用していますが、まだそのコードを騙すことができるので、clearIntervalは停止しません。私の左のマウスボタンを押しながら、私はコンテキストメニューを開くために右のものを簡単に押します。今すぐclearIntervalが呼び出されませんでした。

contextmenuイベントをclickerに追加すると、clearIntervalが呼び出されますが、その間隔はクリアされません。

See this demo

答えて

2

mousedownイベントにclearInterval()を追加します。コンテキストメニューでトリガされ、それが一度に実行されているから、複数のタイマーを防ぐことができます

clicker.mousedown(function() { 
    clearInterval(timeout); 
    timeout = setInterval(function() { 
    clicker.text(count++); 
    }, 500); 

    return false; 
}); 

Fiddle

+0

クラップスは、私の頭の中に突っ込んだものよりはるかに優れた解決策です。しかし、私はここで私の答えの重要な点を残しておきます: 'setInterval'をvarに設定するだけで、区間そのものではなく、識別レコードが保存されます。 – DBS

+0

私はあなたの答えがうまくて、それが削除されて見て驚いたと思った。良い点re "setInterval'を設定する..." –

+1

私はすでに速いクリックで "チート"することができたので、@ DBSの回答をコメントに書き込もうとしました。私はこれが1つの変数への複数のアクセスの事実によって引き起こされたと思います。 現時点では私はあなたの上で "チート"することができません@RickHitchcock;) – Steckdoserich