[ JQuery ]
- 2013-11-12
$(".clickArea").click(function (){ menuid = "#"+this.id+"_menu"; $(menuid).slideToggle(); });
クリックイベントの監視は、idを注目するのではなく、クラスの「clickArea」を対象とします。すると、メニュー1でもメニュー2でもさらにメニュー3でもクリックイベントが発生した時に、
$(".clickArea").click(function (){ ここの処理が実行 });
「ここの処理が実行」の部分に記述したスクリプトが実行される事になります。ここで重要なのは、どのメニューでクリックされたかを識別する事です。識別できれば、そのメニューだけを開閉できます。そこで登場するのが、「this」というキーワードです。thisは、イベント処理の関数内で記述することで、イベントが起きた場所というか物(オブジェクト)を示す変数です。例えばここで、this.idとすれば、クリックされた部分のidとなります。そこで、メニューのクリックされる部分のidをca1,ca2,ca3とし、メニューの内容のdivのブロックをca1_menu,ca2_menu,ca3_menuとし、クリックされたidの名前の後に「_menu」と追加された名前にします。そうすると、イベントが発生した時にの、this.id+"_menu"がca1_menu・・・ca3_menuとなり、メニューと内容を計算式で関連付けて利用しやすくなります。そうすることで、以下の一つの記述でca1〜ca3に対応できるわけです。
$(".clickArea").click(function (){ menuid = "#"+this.id+"_menu"; $(menuid).slideToggle(); });
サンプルですので、メニューを100個くらい作ってみましょう。
メニュー100個に挑戦→開閉メニュー05