- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【jQuery】クリックで開閉するメニュー)
jQueryクリックで開閉するメニュー
このQ&Aのポイント
- jQueryを使用してクリックで開閉するプルダウンメニューを作成しています。
- 要素以外をクリックしたらメニューを閉じる方法を教えてください。
- OKWaveサイトのメニューバーのように、メニュー以外をクリックすると閉じる動作にしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$(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) { ... }); 引数の位置関係に注意と、こちらはセレクタの省略ができません。
その他の回答 (1)
- think49
- ベストアンサー率59% (285/482)
回答No.2
いろんな書き方がありますね。 http://jsfiddle.net/zAPJn/ バブリングを利用するところは #1 の方のコードと同じです。 http://d.hatena.ne.jp/tetsuya_odaka/20090713/1247447276
お礼
使用していたjQueryのバージョンでは.on()は使えませんでしたが、.delegate()で希望どうり開閉するプルダウンメニューが作れました。 ありがとうございました。