html
1<div id="switch1" class="switch">開閉スイッチ1</div> 2<div id="area1" class="close"> 3コンテンツ1 4</div> 5 6<div id="switch2" class="switch">開閉スイッチ2</div> 7<div id="area2" class="close"> 8コンテンツ2 9</div> 10 11<div id="switch3" class="switch">開閉スイッチ3</div> 12<div id="area3" class="close"> 13コンテンツ3 14</div>
このように開閉するコンテンツが複数あるとき、
下記のような条件での実装方法がわかりません。。
- 開閉スイッチを押すと、セットのコンテンツが開閉する。(switchとareaは番号が同じものがセット)
- あるareaが開いているときに、他のセットのスイッチを押すと、開いているareaは閉じて、スイッチを押したセットのareaが開く
- あるareaが開いているときに、スイッチ以外のエリアを押すと開いているareaが閉じる
- 開いているareaのswitchは背景色をかえる
下記試しました。(汚いソース。。ああ恥ずかしい。。)
css
1.close {display:none;} 2.open {display:block;} 3.switch {background:#fff;} 4.switch.active {background:#ddd;}
js
1$(function() { 2 $('.active').click(function(){ 3 $('#area1').removeClass("open"); 4 $('#area1').addClass("close"); 5 $('#area2').removeClass("open"); 6 $('#area2').addClass("close"); 7 $('#area3').removeClass("open"); 8 $('#area3').addClass("close"); 9 $(this).removeClass("active"); 10 }); 11}); 12$(function() { 13 $('#switch1').click(function(){ 14 $('#area1').removeClass("close"); 15 $('#area1').addClass("open"); 16 $('#area2').removeClass("open"); 17 $('#area2').addClass("close"); 18 $('#area3').removeClass("open"); 19 $('#area3').addClass("close"); 20 $('#switch1').addClass("active"); 21 $('#switch2').removeClass("active"); 22 $('#switch3').removeClass("active"); 23 }); 24}); 25$(function() { 26 $('#switch2').click(function(){ 27 $('#area1').removeClass("open"); 28 $('#area1').addClass("close"); 29 $('#area2').removeClass("close"); 30 $('#area2').addClass("open"); 31 $('#area3').removeClass("open"); 32 $('#area3').addClass("close"); 33 $('#switch1').removeClass("active"); 34 $('#switch2').addClass("active"); 35 $('#switch3').removeClass("active"); 36 }); 37}); 38$(function() { 39 $('#switch3').click(function(){ 40 $('#area1').removeClass("open"); 41 $('#area1').addClass("close"); 42 $('#area2').removeClass("open"); 43 $('#area2').addClass("close"); 44 $('#area3').removeClass("close"); 45 $('#area3').addClass("open"); 46 $('#switch1').removeClass("active"); 47 $('#switch2').removeClass("active"); 48 $('#switch3').addClass("active"); 49 }); 50}); 51
ヒントだけでもよいので、教えていただけると助かります。
よろしくお願いします。


回答3件
あなたの回答
tips
プレビュー