jQueryを使って離れた場所にある要素を遠隔で操作できる様にしてみる。
今回は左側にボタン。右側にコンテンツ表示部分としていますが、位置は好きなところで使用できます。
更新することも考えて、htmlでは極力クラス名やID名を設定せずにしたいと思います。
まずはhtmlから
<div id="wrapper"> <div id="bt"> <p>title1</p> <p>title2</p> <p>title3</p> <p>title4</p> <p>title5</p> </div> <div id="cont"> <p>内容1</p> <p>内容2</p> <p>内容3</p> <p>内容4</p> <p>内容5</p> </div> </div>
特に変わったことをしていません。
CSSもあっさりと
#wrapper { display: flex; } #wrapper div { flex:1; margin: 10px; border: 1px solid #999; } #bt p { margin: 10px; padding: 5px; border: 1px solid #999; }
細かいところは書いていません。いい感じにしてくださいね。
最後に問題のjQueryです。
$(function(){ var btNo; $("#cont p:not(:first)").css("display","none"); $("#bt p").click(function(){ btNo = $(this).index()+1; $("#cont p").css("display","none"); $("#cont p:nth-child(" + btNo +")" ).css("display","block"); }); });
ここでは変数btNoを用意して、その変数にクリックした項目の順番を取得して代入(+1はindex()が0から始まるので1を追加)しています。
そして#cont pのnth-childの値に変数btNoを使用してボタンの対応する#contを表示を切り替えています。