1

.hover を使用して、HTML 要素を光っているように見せようとしています。私のコードは次のようになります:

var glow = $('<div class="glow">...</div>');

$(this).hover(function() {
   glow.fadeIn();
}, function() {
   glow.fadeOut();
}

私が得ている効果は、フェードが無限ループでマウスオーバーで何度も繰り返されることです。コンソールを見ると、hoverIn および hoverOut ハンドラー関数が呼び出され続けています。

何が起こっているのでしょうか?

ありがとう!

4

1 に答える 1

2

代わりにこのコードを使用したいと思います:

var glow = $('<div class="glow">...</div>');

glow.hover(function() {
   $(this).fadeIn();
}, function() {
   $(this).fadeOut();
}

また

var glow = $('<div class="glow">...</div>');

glow.hover(function() {
   glow.fadeIn();
}, function() {
   glow.fadeOut();
}

あなたの $(this) はあいまいで、おそらく正しいオブジェクトに hover() ハンドラーを配置していないと思います。

ここで重要なことを省略している可能性もあります (glowたとえば、 は DOM に配置されます)。

さらに悪化した場合は、hover完全にスキップして代わりに and を使用mouseoverできます。または、すべて手動で行いmouseoutたい場合は、mouseover および mouseout イベントを使用できます。bind

実際には、単一のマウスオーバー イベントで反復的なアクションが見られるため、単一のhoverハンドラーの多くのインスタンスを何らかの方法でglowオブジェクトにバインドしたことを示している可能性があります。その場合は、新しいハンドラーをバインドする前に現在のハンドラーを削除するために使用できますunbindが、複数のバインドを回避する方法を見つけることができる場合は、より良い戦略です。

これが役立つことを願っています!

于 2011-01-12T00:23:55.493 に答える