• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryでの開閉メニューについて)

jQueryでの開閉メニューについて

このQ&Aのポイント
  • jQueryでアコーディオン(開閉)メニューを作成しています。メニューの右端に、マークを表示していますが、開閉状態に応じて変えることはできますでしょうか?
  • 単に変えるだけならできますが、開閉状態に応じて変えるとなると、なかなかできませんでした。画像のように閉じているときは右端に[+]マークを表示し、開いたときは[-]マークを表示したいのです。
  • 以下ソースです。よろしくお願いいたします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

クリックの処理内容が、表示/非表示のほうはトグルになっているのに、マークの処理は一律にしているところが問題なのではないでしょうか? +-を反転する処理にしてあげればよろしいかと。 例えば $('h4.conmenu').click(function(){  $(this).next().slideToggle('fast');  var s = $(this).find("span");  s.html(marks[s.html()==marks.closedMark?'openedMark':'closedMark']); }); あるいは、clickメソッドではなくtoggleを用いて $('h4.conmenu').toggle(function(){  $(this).next().slideDown('fast');  $(this).find("span").html(marks.openedMark); },function(){  $(this).next().slideUp('fast');  $(this).find("span").html(marks.closedMark); }); とか。 一方で、メニューのタイトルとその子の構造的な関係が親子になっていないので、処理がしにくいようにも思われます。 (このままの構造だと、多階層メニューに展開するのが大変そう) なお、ご質問とは関係ありませんが、 >//オンマウスでカーソル変更 の部分の処理は意味がないのではないでしょうか? (マウスがはずれた時のカーソルを制御することに意味がないし、オンマウスの度に処理するのも無駄では?) 最初からCSSで cursor:pointer; としておけば済むように思います。

aoumiushi
質問者

お礼

回答ありがとうございます。 おかげ様で、うまく表示できるようになりました。 オンマウスでカーソル変更に関してですが、 ご指摘の通り確かに必要ありませんね。 どうもありがとうございました。

関連するQ&A