• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【jQuery】クリックで開閉するメニュー)

jQueryクリックで開閉するメニュー

このQ&Aのポイント
  • jQueryを使用してクリックで開閉するプルダウンメニューを作成しています。
  • 要素以外をクリックしたらメニューを閉じる方法を教えてください。
  • OKWaveサイトのメニューバーのように、メニュー以外をクリックすると閉じる動作にしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • my--
  • ベストアンサー率89% (91/102)
回答No.1

$(document).on('click', '*', function (e) { var target = e.target; var a = $('div.a'); if ($(target).parents('div.menu, div.a')[0] // targetが div.menu, div.a どちらかの子孫 || target === $('div.menu')[0] // target が div.menu || target === a[0]) // target が div.a return; // いずれかの条件に一致すれば処理を終了 a.hide(); }); documentで監視してみた一例です。第二引数にセレクタを置いてますが、省略してもかまいません。 clickイベントならdocumentですべての要素を補足できますから、event.targetプロパティの扱いにも慣れておくと良いと思います。.on()はバージョン1.7から使えます。 1.7以前のバージョンでは.delegate()を使って下さい。 $(document).delegate('*', 'click', function (e) { ... }); 引数の位置関係に注意と、こちらはセレクタの省略ができません。

noname#256090
質問者

お礼

使用していたjQueryのバージョンでは.on()は使えませんでしたが、.delegate()で希望どうり開閉するプルダウンメニューが作れました。 ありがとうございました。

その他の回答 (1)

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

いろんな書き方がありますね。 http://jsfiddle.net/zAPJn/ バブリングを利用するところは #1 の方のコードと同じです。 http://d.hatena.ne.jp/tetsuya_odaka/20090713/1247447276