第三章jQuery操作DOM


DOM(Document Object Model、ドキュメントオブジェクトモデル)は、ドキュメントの内容と表示形式を変更できる結果的な表示方法を提供します.
3.1 DOMベース
例3-1 DOMページドキュメントの作成

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>DOM </title>  
  6. <style>  
  7.     body{font-size:13px}  
  8.     table,div,p,ul{width:280px;border:solid 1px #666;margin:10px 0px 10px 0px;padding:0px;background-color:#eee}  
  9. </style>  
  10. </head>  
  11. <body>  
  12.     <table>  
  13.         <tr><td>Td1</td></tr>  
  14.         <tr><td>Td2</td></tr>  
  15.     </table>  
  16.     <div>DIV</div>  
  17.     <p>P</p>  
  18.     <div><span>Span</span></div>  
  19.     <ul>  
  20.         <li>Li1</li>  
  21.         <li>Li2</li>  
  22.     </ul>  
  23. </body>  
  24. </html> 

3.2要素へのアクセス
 
3.2.1要素属性操作
jQueryでは、attr()メソッドを使用して要素属性の取得と設定操作を実行できますが、removeAttr()メソッドを使用すると、指定した属性を簡単に削除できます.
1、要素の属性を取得する
要素のプロパティを取得する構文は次のとおりです.
attr(name)
ここで、パラメータnameは属性の名前を表す.
例3-2 attr(name)メソッドによる要素の属性の取得
 

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  5. <title> </title> 
  6. <script language="javascript" type="text/javascript" src="../jquery/jquery-1.4.2.min.js"></script> 
  7. <style type="text/css"> 
  8.     body{font-size:12px}  
  9.     div{float:left;padding-left:10px}  
  10.     img{border:solid 1px #ccc;padding:3px;float:left}  
  11. </style> 
  12. <script type="text/javascript"> 
  13.     $(function(){  
  14.         var strAt = $("img").attr("src");//  
  15.         strAt+="<br/><br/>"+  
  16.         $("img").attr("title");//  
  17.         $("#divAlt").html(strAt);//  
  18.     })  
  19. </script> 
  20. </head> 
  21. <body> 
  22.     <img alt="" title=" " src="../images/3/img01.jpg"></img> 
  23.     <div id="divAlt"></div> 
  24. </body> 
  25. </html> 

2、要素の属性を設定する
 
ページでは、attr()メソッドでは、要素のプロパティだけでなく、次のようにプロパティ構文フォーマットを設定する要素のプロパティも設定できます.
attr(key,value)
ここでkeyは属性名を表し、valueは属性の値を表す.複数のプロパティを設定する場合は、attr()メソッドで実装することもできます.構文フォーマットは次のとおりです.
attr({key0:value0,key1:value1})
例3-3要素のプロパティの設定(一)

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  5. <title> </title> 
  6. <script language="javascript" type="text/javascript" src="../jquery/jquery-1.4.2.min.js"></script> 
  7. <style type="text/css"> 
  8.     body{font-size:12px}  
  9.     .clsSpn{float:left;padding-top:10px;padding-left:10px}  
  10.     .clsImg{border:solid 1px #ccc;padding:3px;float:left}  
  11. </style> 
  12. <script type="text/javascript"> 
  13.     $(function(){  
  14.         $("img").attr("src","../images/3/img01.jpg");// src  
  15.         $("img").attr("title"," ");// title  
  16.         $("img").attr({"src":"../images/3/img02.jpg","title":" "})//  
  17.         $("img").addClass("clsImg");//  
  18.         $("span").html(" ");//  
  19.     })  
  20. </script> 
  21. </head> 
  22. <body> 
  23.     <img alt="" src="../images/3/img03.jpg" style="float:left"></img> 
  24.     <span class="clsSpn"> </span> 
  25. </body> 
  26. </html> 

それ以外にattr()メソッドはfunction()関数をバインドすることもでき、この関数によって返される値は要素の属性値として、その構文フォーマットは以下のように表される.
 
attr(key,function(index))
ここで、パラメータindexは現在の要素のインデックス番号であり、関数全体が要素の属性値として文字列を返します.
例3-4要素のプロパティの設定(2)
機能の説明:ページでfunction()ランダム関数を使用してランダムな数値を返し、その数値に基づいてプロパティsrcの値として文字列を構成します.
 

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  5. <title> </title> 
  6. <script language="javascript" type="text/javascript" src="../../js/jquery/jquery-1.4.2.min.js"></script> 
  7. <style type="text/css"> 
  8.     body{font-size:12px}  
  9.     。clsSpn{float:left;padding-top:10px;padding-left:10px}  
  10.     .clsImg{border:solid 1px #ccc:padding:3px;float:left}  
  11. </style> 
  12. <script type="text/javascript"> 
  13.     $(function(){  
  14.         $("img").attr("src",function(){  
  15.             return "../../images/3/img0"+Math.floor(Math.random()*2+1)+".jpg"  
  16.         });// src  
  17.         $("img").attr("title"," ");// title  
  18.         $("img").addClass("clsImg");//  
  19.     })  
  20. </script> 
  21. </head> 
  22. <body> 
  23.     <img alt="" src="../../images/3/img03.jpg" style="float:left"></img> 
  24. </body> 
  25. </html><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  26. <html> 
  27. <head> 
  28. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  29. <title> </title> 
  30. <script language="javascript" type="text/javascript" src="../../js/jquery/jquery-1.4.2.min.js"></script> 
  31. <style type="text/css"> 
  32.     body{font-size:12px}  
  33.     。clsSpn{float:left;padding-top:10px;padding-left:10px}  
  34.     .clsImg{border:solid 1px #ccc:padding:3px;float:left}  
  35. </style> 
  36. <script type="text/javascript"> 
  37.     $(function(){  
  38.         $("img").attr("src",function(){  
  39.             return "../../images/3/img0"+Math.floor(Math.random()*2+1)+".jpg"  
  40.         });// src  
  41.         $("img").attr("title"," ");// title  
  42.         $("img").addClass("clsImg");//  
  43.     })  
  44. </script> 
  45. </head> 
  46. <body> 
  47.     <img alt="" src="../../images/3/img03.jpg" style="float:left"></img> 
  48. </body> 
  49. </html> 

3.要素の属性を削除する
 
jQueryでattr()メソッドで要素のプロパティを設定した後、removeAttr()メソッドを使用して要素のプロパティを削除します.構文フォーマットは次のとおりです.
removeAttr(name)
ここで、パラメータnameは要素属性の名前です.
たとえば、ラベルのsrcプロパティを次のコードで削除できます.
$("img").removeAttr("src");
3.2.2要素の内容操作
jQueryでは、要素のコンテンツを操作する方法としてhtml()とtext()があり、前者はJavaScriptのinnerHTML属性と類似しており、要素のHTMLコンテンツを取得または設定する.後者は、JavaScriptのinnerTextプロパティ、すなわち要素のテキストコンテンツを取得または設定することに似ています.両者のフォーマットと機能の違いは以下の通りである.
 
構文フォーマット
パラメータの説明
機能の説明
html()
パラメータなし
要素を取得するためのHTMLコンテンツ
html(var)
varパラメータが要素のHTMLコンテンツ
要素を設定するためのHTMLコンテンツ
text()
パラメータなし
要素を取得するテキストの内容
text(var)
varパラメータは要素のテキスト内容です
要素を設定するテキストの内容
説明:html()メソッドはXHTMLのドキュメントのみをサポートし、XMLドキュメントには使用できませんが、text()はHTMLドキュメントもサポートし、XMLドキュメントもサポートします.
 
例3-5要素の内容を設定または取得する

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  5. <title> </title> 
  6. <script language="javascript" type="text/javascript" src="../../js/jquery/jquery-1.4.2.min.js"></script> 
  7. <style type="text/css"> 
  8.     body{font-size:12px}  
  9.     div{border:solid 1px #666;padding:5px;width:220px;margin:5px}  
  10. </style> 
  11. <script type="text/javascript"> 
  12.     $(function(){  
  13.         var strHTML = $("#divShow").html();// HTML  
  14.         var strText = $("#divShow").text();//  
  15.         $("#divHTML").html(strHTML);// HTML  
  16.         $("#divText").text(strText);//  
  17.     })  
  18. </script> 
  19. </head> 
  20. <body> 
  21.     <div id="divShow"><b><i>Write Less Do More</i></b></div> 
  22.     <div id="divHTML"></div> 
  23.     <div id="divText"></div> 
  24. </body> 
  25. </html> 

3.2.3要素値の取得または設定
 
jQueryでは、要素の値を取得する場合、val()メソッドで実装されます.構文フォーマットは次のようになります.
val(val)
パラメータvalを持たない場合は、要素の値を取得し、逆にパラメータvalの値を要素に割り当てます.すなわち、要素の値を設定します.
また、val()メソッドでは、selectタグのペアオプション値も取得できます.構文フォーマットは次のとおりです.
val().join(",")
例3-6要素の値の設定または取得