0

私はかなり厄介な問題に直面しています。2 つのイベント ハンドラーを登録します。1 つはページ上の要素mouseenter用で、もう 1 つは要素用です。その中に複数のエリアがあります。要素を離れると、ハンドラーが呼び出されますが、これは問題ありません。うまくいかないのは、その内部を離れるとハンドラーもトリガーされることです。 mouseoutlidivlioutoutdivli

以下は、それを説明する画像です。青い領域は、 andイベントliを登録する要素です。enterout
ここに画像の説明を入力

内部にハンドラーを登録しdivsて伝播を停止しようとしましたが、outそれらの内部 div に入ったときにのみハンドラーがトリガーされます。

ここで何がうまくいかないのですか?

4

1 に答える 1

2

マウスアウトmouseleaveの代わりに使用します。Mouseoutマウスがターゲットの真上から離れるたびにトリガーされます。したがって、 に入るとdivs、マウスは から出liて div に移動します。しかし、それはLIもちろんコース内にあり、mouseleave を使用すると機能します。

JQueryドキュメントから:

mouseleave イベントは、イベント バブリングを処理する方法が mouseout とは異なります。この例で mouseout が使用された場合、マウス ポインターが内部要素の外に移動すると、ハンドラーがトリガーされます。これは通常、望ましくない動作です。一方、mouseleave イベントは、マウスが子孫ではなく、バインドされている要素から離れたときにのみハンドラーをトリガーします。したがって、この例では、マウスがアウター要素から離れたときにハンドラーがトリガーされますが、インナー要素からはトリガーされません。

于 2012-10-12T10:38:54.813 に答える