1

ドロップダウンメニューに以下を使用しています。それはうまく機能しますが、ボディのどこかがクリックされた場合、または別のドロップダウンがクリックされた場合に、開いているドロップダウンをslideUpに取得する方法がわかりません。

$(document).ready(function () { 
$('.nav li').click(function() {

  var slideToggle = this;
  if ($('ul', this).is(':visible')) {
      $('ul', this).slideUp(function() {
          $(slideToggle).removeClass('active');
      });
  }
  else {
      $('ul', this).slideDown();
      $(slideToggle).addClass('active');
  }
});
});

ここでアクションを表示します:http://jsfiddle.net/Ngh5C/1/

私が尋ねたことについて行く最も簡単な方法は何ですか?

4

1 に答える 1

2

イベント バブリングを利用して、クリック ハンドラーを適切な親コンテナー (body など) にバインドします。ハンドラーでターゲットを確認し、それがメニューの 1 つでない場合は、セレクターを使用して開いているメニューを見つけて閉じます。

出発点としての簡単な例を次に示します。

http://jsfiddle.net/Ngh5C/6/

一度に1つだけ開いたままにするには、このフィドルを試してください:

http://jsfiddle.net/Ngh5C/7/

クリックされたアイテムの隣人だけを本当に閉じたい場合 (これは奇妙な要件です)、これは機能します:

http://jsfiddle.net/Ngh5C/8/

于 2012-10-18T15:56:47.800 に答える