5

私は次のhtmlセットアップを持っています:

<div id="div1">
<div id="content1">blaat</div>
<div id="content1">blaat2</div>
</div>

スタイルが設定されているため、他の 2 つの div のいずれかをホバーせずに div1 をホバーすることはできません。これで、div1 にマウスアウトができました。
問題は、マウスアウトがバブリングしているため、content1 から content2 に移動したときに div1.mouseout がトリガーされることです。
また、イベントのターゲット、currentTarget、または relatedTarget プロパティが div1 になることはありません。これは、直接ホバーされることがない
ためです。些細なことのようですが、動作させることができません...
div1 のマウスアウトは、マウスが div1 を離れたときにのみトリガーされます。

可能性の 1 つは、マウスのエンターとマウスリーブにデータを設定することですが、これは単なるマウスアウトであるため、すぐに使用できると確信しています...

編集:

bar.mouseleave(function(e) {
                if ($(e.currentTarget).attr('id') == bar.attr('id')) {
                    bar.css('top', '-'+contentOuterHeight+'px');
                    $('#floatable-bar #floatable-bar-tabs span').removeClass('active');
                }
            });

マウスアウトをマウスリーブに変更すると、コードが機能しました...

4

2 に答える 2

13

mouseleave代わりにイベントを使用するかmouseout、このためにイベントを使用して、特定の問題を処理します。 詳細はこちら

違いに関するドキュメントから:

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

マークアップの例:

<div id="outer">
  Outer
  <div id="inner">
    Inner
  </div>
</div>
于 2010-03-15T12:53:09.037 に答える
2

このhoverメソッドには 2 つのパラメーターがあり、1 つ目はマウス イン用、2 つ目はマウス アウト用です。

$('your_div').hover(function(){
  // your code here.
}, function(){// any mouse out code here})
于 2010-03-15T12:53:00.833 に答える