2011-01-12 15 views
1

私は、HTML要素が輝くように見えるように.hoverを使用しようとしています。私のコードは次のようになります。jQueryのホバー無限ループ

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

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

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

何が起こっている可能性がありますか?

ありがとうございます!

+1

あなたがhttp://jsfiddle.net/を提供できる場合はいいでしょう –

+0

もっとコードを入力してください。あなたの '$(this) 'は、あなたが' .hover() 'を別のイベントの結果として割り当てるかもしれないと考えるようになり、それ故に重複して繰り返し割り当てられています。 – user113716

+1

この場合、これは何ですか? – leeny

答えて

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(); 
} 

私はあなたの$今信じている(この)あいまいで、おそらく(ホバーを入れていません)適切なオブジェクトのハンドラ

ここで重要な何かを省略している可能性もあります(DOM内にはglowが入ります)。悪いことは悪いことになれば

、あなたは完全にhoverをスキップすることができますし、だけではなく、mouseovermouseoutを使用するか、またはあなたが本当に全体のことについてマニュアルをを取得したい場合は、マウスオーバーとマウスアウトイベントとbindを使用することができます。

実際には、1回のmouseoverイベントで繰り返しアクションが発生しているので、hoverハンドラの多くのインスタンスを何らかの形でglowオブジェクトにバインドしている可能性があります。 unbindを使用すると、現在のハンドラをバインドする前に削除することができます。新しいハンドラがバインドされる場合はバインドしないでください。

こちらがお役に立てば幸いです。

+0

それはうまくいきません。この問題は、人間の文脈であるかもしれない。基本的に、私はdomを通して特定のクラス( "グロー")を含む要素を探しています。要素にクラスがある場合は、新しいDOM要素を追加します。 – tbarho

+0

ここに私がやっていることの詳細を示すjsFiddleがあります:http://jsfiddle.net/c4ha7/1/ – tbarho