HOME>WEBプログラム覚書>jQueryによる表示、非表示切り替え

jQueryによる表示、非表示切り替え

今さらながらjQueryをお勉強。日本語のリファレンスも充分すぎるくらい充実してますんで、勉強しやすいですねよく使いそうなDivの表示、非表示切り替えをjQueryでやると・・・

jQueryによる表示、非表示サンプル

Javascript

  1. $(function(){
  2.     // id="jQuerySample" 内のdivを非表示
  3.     $("#jQuerySample").css("display", "none");
  4.  
  5.     // id="jQuerySample"内のi番目のh5がクリックされた時、
  6.     // i番目のdivの表示、非表示切り替え
  7.     $("#jQuerySample").each(function(i){
  8.         $(this).click(function(){
  9.             $("#jQuerySample").eq(i).toggle();
  10.         });
  11.     });
  12. });
  13.  

HTML

  1. <div id="jQuerySample">
  2.     <h5>jQueryサンプル1</h5>
  3.     <div>
  4.     <p>これはjQueryのサンプル1です。</p>
  5.     </div>
  6.  
  7.     <h5>jQueryサンプル2</h5>
  8.     <div>
  9.     <p>これはjQueryのサンプル2です。</p>
  10.     </div>
  11.  
  12.     <h5>jQueryサンプル3</h5>
  13.     <div>
  14.     <p>これはjQueryのサンプル3です。</p>
  15.     </div>
  16. </div>
  17.  

実行結果

jQueryサンプル1

これはjQueryのサンプル1です。

jQueryサンプル2

これはjQueryのサンプル2です。

jQueryサンプル3

これはjQueryのサンプル3です。

たったこれだけ。自分の場合jQuery使わないと下記のようにわけわからんことになってしまいました。もう吐きそうです。

jQueryを利用しない表示、非表示サンプル

Javascript

  1. onload = function() {
  2.     obj = document.getElementById("jQuerySample");
  3.     h5 = getEreaObj(obj,"h5");
  4.     div = getEreaObj(obj, "div");
  5.  
  6.     for (i=0; i<h5.length; i++) {
  7.         div[i].style.display = "none";
  8.         showhide(h5[i], i);
  9.     }
  10. }
  11.  
  12. function getEreaObj(obj, tag){
  13.   objs = obj.getElementsByTagName(tag);
  14.   return objs;
  15. }
  16.  
  17. function showhide(obj, num){
  18.     myFunc = function(){
  19.         if(div[num].style.display == "none"){
  20.           div[num].style.display = "block";
  21.         }else{
  22.           div[num].style.display = "none";
  23.         }
  24.     }
  25.     obj.onclick = myFunc;
  26. }
  27.  

表示、非表示の切り替えでもこんな面倒です。さらにdivの中にdivが入ってる入れ子の状態の場合、 通常もっと厄介になりますが、jQuery利用すれば選択部分を変更するだけです。

jQueryを利用した子要素のみの表示、非表示サンプル

Javascript

  1. $(function(){
  2.     // id="jQuerySample2" を親要素に持つdivを非表示
  3.     $("#jQuerySample2 > div").css("display", "none");
  4.  
  5.     // id="jQuerySample2"を親要素に持つi番目のh5が
  6.     // クリックされた時、i番目のdivの表示、非表示切り替え
  7.     $("#jQuerySample2 > h5").each(function(i){
  8.         $(this).click(function(){
  9.             $("#jQuerySample2 > div").eq(i).toggle();
  10.         });
  11.     });
  12. });
  13.  

HTML

  1. <div id="jQuerySample">
  2.     <h5>jQueryサンプル1</h5>
  3.     <div>
  4.     <p>これはjQueryのサンプル1です。</p>
  5.         <div>
  6.         <p>これはjQueryのサンプル1の中のdiv内です。</p>
  7.         </div>
  8.     </div>
  9.  
  10.     <h5>jQueryサンプル2</h5>
  11.     <div>
  12.     <p>これはjQueryのサンプル2です。</p>
  13.     </div>
  14.  
  15.     <h5>jQueryサンプル3</h5>
  16.     <div>
  17.     <p>これはjQueryのサンプル3です。</p>
  18.         <div>
  19.         <p>これはjQueryのサンプル3の中のdiv内です。</p>
  20.         </div>
  21.     </div>
  22. </div>
  23.  

実行結果

jQueryサンプル1

これはjQueryのサンプル1です。

これはjQueryのサンプル1の中のdiv内です。

jQueryサンプル2

これはjQueryのサンプル2です。

jQueryサンプル3

これはjQueryのサンプル3です。

これはjQueryのサンプル3の中のdiv内です。

実際書き比べてみると便利さがよくわかります・・・

投稿日 2008年6月30日 20:28
カテゴリ JavaScript
タグ jQuery | サンプルコード
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1131

コメント

jQueryによる表示、非表示サンプル
のサンプルコードがおかしいと思います。
$("#jQuerySample").css("display", "none");
だと"jQuerySample"内がすべて消えてしまうため"jQuerySample div"ではないでしょうか?

その下の"jQuerySample"の記述も
”jQuerySample h5”になるのではないでしょうか?

勝手ながらソースを参照したところそうなっていました。

コメントする
Name
Email Address
URL