0
私はこの問題があります。私はリンクを削除する関数を定義しました(例のためだけです)。リンク上でmouseleaveイベントが発生した後、5秒後に消えることを望みます。さらに、もし私が同じリンク(表面的にsetTimeoutが走っている)の上にマウスを置くと、そのsetTimeoutはキャンセルされます。たとえば、次のコードは動作しますが、setTimeoutを定義していないので、キャンセルすることはできません。奇妙なsetTimeout問題
function func() { $('a').remove(); }
//var interval = setTimeout(func , 5000);
$('body').on('mouseleave', 'a', function() {
setTimeout(func , 5000);
});
$('body').on('mouseenter', 'a', function(){
// clearTimeout(interval)
});
代わりに、二行のコメントを外す、私は括弧なしで機能func
を使用していさえもが、リンクはすぐに消えますので、私は問題にはならないだろうと思ったでしょう(fiddle):
function func() { $('a').remove(); }
var interval = setTimeout(func , 5000);
$('body').on('mouseleave', 'a', function() {
interval
});
$('body').on('mouseenter', 'a', function(){
// clearTimeout(interval)
});
目的の機能を達成するにはどうすればよいですか。
ありがとうございます!
ブリリアント:-)。ありがとう、それは完璧に動作します。 –
あなたはとても近かった!次回に何が起きているのかを確認するために、デバッガで掘り下げて試してみるべきです。 –
私はかなりconsole.logを使用していましたが、私は私のところで 'interval'を定義して、mouseleave関数の中でinterval = setTimeoutを使っていませんでした。 –