2016-07-27 9 views
0

私はsetIntervalが適用された複数のアイテムを持っています。私はclearIntervalを持っていて、ホバー上でアニメーションを停止します。もちろん、アニメーション化するアイテムはすべて停止します。私は、ホバリングされたアイテムだけの間隔をクリアし、他の人がアニメーションを続けることを許可したい。私は、アニメーションが互いに同期していなくても問題ありません。複数の要素に適用されたときに、単一の要素に対してsetIntervalをクリアするにはどうすればよいですか?

var boxInterval = setInterval(startBox, 3000); 

$('.box').mouseenter(function(){ 
    clearInterval(boxInterval); 
}); 

$('.box').mouseleave(function(){ 
    boxInterval = setInterval(startBox, 3000); 
}); 

jsfiddle:1の上に浮かんで通知が他を一時停止します。ホバリングオフ(2秒後)

+0

startBoxまたは作業用のコードを表示できますか? –

+0

'setInterval'がウィンドウ全体に適用されていますが、特定の要素に対してアクションを実行するかどうかを指定するフラグ(boolean)を追加することができます – Kaiido

+0

@RajaSekar、jsfiddleを追加しました – dcp3450

答えて

1

setTimeout/setIntervalから返された参照は要素に関連付けられていません。それぞれの参照を一意に保存する必要があります。私は、私は2つのイベントは、常にペアでトリガので、各項目についてboxIntervalを保存していると思う... .data()プロパティで

$('.box').mouseenter(function(){ 
    clearInterval($(this).data('timer')); 
}); 

$('.box').mouseleave(function(){ 
    $(this).data('timer', setInterval(startBox, 3000)); 
}); 
+0

それぞれにsetInterval 'を' .each() 'にしてしまったのですが、私は間違ったトラックにいると思っていました。 – dcp3450

+0

リファクタリングが必要でしたが、問題が見つかりました。私は奇妙な遅れを引き起こした別の 'each 'を走らせていた。あなたの答えがインスピレーションとしての問題を修正しました。 – dcp3450

0

に行くと思います。

関連する問題