- ベストアンサー
jQueryを使用して特定の条件で画像の表示を切り替える方法
- jQueryを使用して、クリックされた画像に対して特定のclass属性を追加する方法を説明します。
- 特定のclass属性を持つ画像のsrc属性の値を置換する方法について説明します。
- 問題が発生している箇所を特定して、正しいクラスや画像の指定方法を見つけるためのポイントを解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
jQuery の each を使えば、個々のエレメントに対して操作が行えます。 あとは、質問には _off → _on しか書いてませんが、「current が無いものは _on →_off に」する必要もあると思いますので、両方あわせると、 ---ここから--- $("#localSide h2 img").each(function(index, element) { $(element).attr("src", $(element).attr("src").replace("_on", "_off")); }); $("#localSide h2 img.current").each(function(index, element) { $(element).attr("src", $(element).attr("src").replace("_off", "_on")); }); ---ここまで--- といった形になるでしょうか。これを $(this).addClass("current"); の次あたりに入れておけば、img src の切り替えができます。 ・別解 img ではなく、スタイルシートの方で画像を指定するようにしておけば、src を書き換える必要はありません。また、 img 要素ではなく h2 要素をクリックした時に切り替える、といったことも簡単に表現できます。 ---ここから--- <style> #localSide h2 span.button { background-image: url(images/menu/button_off.gif); display: inline-block; width: 20px; height: 20px; text-indent: -9999px; } #localSide h2.current span.button { background-image: url(images/menu/button_on.gif); } </style> <script><!-- $(document).ready(function() { $("#localSide h2").click(function(){ if($(this).attr("class") != "current"){ $("#localSide h2.current").removeClass("current"); $(this).addClass("current"); }else{ return false; } }); }); //--></script> (略) <div id="localSide"> <h2><span class="button">button image</span>text</h2> <h2><span class="button">button image</span>text</h2> </h2> </div> ---ここまで--- といった形になります。
お礼
詳しいご説明ありがとうございます。 昨晩、ずっと試行錯誤していて、 eachでいけるとわかったんですが、 自分のは無茶苦茶な書き方だと思うので、 ぜひこちらを参考にさせていただきます。 スタイルでの代案もありがとうございます。 そうですよね。class名で判断して切り替えるなら、 そっちのほうが自然ですよね。 取り急ぎ、お礼まで。