0

特定の基準に一致する場合はホバーされている要素にオーバーレイを適用し、そうでない場合は基準に一致する最初の親にオーバーレイを適用したいと思います。

次のサンプル HTML が与えられ、「一致する」クラスを持つ任意の要素にオーバーレイを適用すると仮定します。

<div class='matches'>
   some Text <span>some more text</span>
</div>

ユーザーが「一部のテキスト」にカーソルを合わせるとオーバーレイがdivに適用され、「その他のテキスト」にカーソルを合わせるとオーバーレイもdivに適用されるようにしたいのは、それがクラスを持つ最初の親であるためです「マッチ」。

これを行うと考えることができる唯一の方法は、非常に非効率的と思われるすべての要素でホバーイベントを監視することです。それは大丈夫ですか、それともこれを行うためのより良い方法はありますか?

4

1 に答える 1

1

これはうまくいくはずです

$('.matches').on('mouseenter', function(e) {
    // $(this) is .matches element
})

編集 - オリジナルは過度に複雑でした。$(this)必要な要素である必要があります。

見つけやすくするために、質問者のソリューションをここに投稿します。

http://jsfiddle.net/swwh8/1/

$('.matches').hover(function(e) {
    $('.matches').removeClass('highlight');
    $(this).addClass('highlight');
    e.stopPropagation();
}, function (e) {
    $(this).removeClass('highlight');
    $(this).parent().closest('.matches').addClass('highlight');
});
于 2013-07-18T22:00:26.280 に答える