4

リストのあるhtmlページがあります

<ul id="mylist">
  <li><a href="#">item 1</a></li>
  <li><a href="#">item 2</a></li>
</ul>

次に、リストからマウスでイベントを発生させるjqueryコード

$('#mylist').mouseout(function(evt) {
    $(this).fadeOut('fast');
});

問題は、item1 と item2 の間でマウスを移動すると (item1 から垂直方向に item2 に移動すると)、マウス アウトが発生する (そして $this が ul を参照している) ことです。リストを離れていないと思うのに、ul がイベントを発生させるのはなぜですか?

4

3 に答える 3

10

たぶん、mouseover/mouseoutの代わりにmouseenter / mouseleaveを使用したいと思うでしょう。

于 2012-12-04T01:34:25.080 に答える
1

これは、JavaScript の「イベント バブリング」によるものだと思います。li のイベントは ul にバブルアップされます。詳細については、こちらをご覧ください: http://www.quirksmode.org/js/events_order.html

これは質問に対する直接的な回答ではないかもしれませんが、JS 開発者なら誰でも知っておくべきことだと思います。

于 2012-12-04T02:11:33.263 に答える
0

これは、 mouseout を a にバインドし、その子をマウスオーバーしているためだと思います(

  • )マウスアウトをトリガーします(私が正しければ)。Esthete が述べたように、それを div でラップし、マウスオーバーをその div にバインドする方が簡単で簡単です。

  • 于 2012-12-04T02:08:48.993 に答える