0

リンクを含むナビゲーションバー全体にmouseout()をバインドする方法を理解するのに問題があります。

ユーザーが#navのリンクにカーソルを合わせると、サブメニューが表示されます。すべてが順調です。

私がやりたいのは、ユーザーが#nav全体からホバリングしたときにそのサブメニューをfadeOutすることです。

マウスアウトの私のコード:

$('#nav').mouseout(function() {
  setTimeout(function() {
   //$('.sub-link').fadeOut();
  }, 2000);
});

#navにあるアンカーリンクにカーソルを合わせると、サブメニューが表示されます。次に、mouseout()が起動し、サブメニューがフェードアウトすると思います。とにかく、#navとその中にアンカーリンクを1つとして機能させる方法はありますか?

マークアップを貼り付けますが、4スペースインデントしても、レンダリングされたhtmlとして表示されます。

サンプルページ:http ://chrisparaiso.com/test/

4

2 に答える 2

1

mouseleave()必要なものは次のとおりです。

$('#nav').mouseleave(function() {
  setTimeout(function() {
   $('.sub-link').fadeOut();
  }, 2000);
});

ドキュメントから:

一方、 mouseleave イベントは、マウスが子孫ではなく、バインドされている要素を離れたときにのみハンドラーをトリガーします。

mouseoutカーソルがイベントをバインドした要素内の要素の上にある場合にトリガーされるのは正しいです。ただしmouseleave、実際には、カーソルが while 要素を離れたときにのみトリガーされます。

この例は、 と の違いをよく示していmouseleave()ますmouseout()

于 2010-04-05T18:30:20.367 に答える
0

のようなセレクターを使用してみてください$('#nav, #nav > a')

于 2010-04-05T18:29:31.403 に答える