第2章 「階層構造へのアクセス」

jQueryでは、より複雑な階層構造を持つエレメントへのアクセスも$()で可能です。この階層構造の指定はスタイルシートでのセレクタ指定で利用できるものが、そのままの文法で使うことができます。
$("p span")とするとpタグ内にあるspanタグが操作対象になります(子孫セレクタ)。サンプル1ではpタグ内にあるspanタグの内容が書き変わります。(サンプル1を実行する

【HTML】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>jQuery Sample</title>
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<h1>jQueryサンプル</h1>
<p><span>軽量でコンパクト</span>なライブラリは?</p>
<p><em>軽量で<span>コンパクト</span>なライブラリ</em>は?</p>
<div><span>jQuery</span>とは?</div>
<p>軽量で<span>コンパクト</span>なライブラリは<span>jQuery</span></p>
<div>軽量で<span>コンパクト</span>なライブラリは<span>jQuery</span></div>
<form>
<input type="button" value="まとめて書き替え" onClick="changeText()">
</form>
</body>
</html>


【JavaScript】
function changeText(){
$("p span").text("【軽量/高速なライブラリです】");
}


サンプル1ではpタグ内に含まれるspanタグ全てが該当しますが、子孫ではなく子のみ対象とすることもできます。この場合は>記号を使って指定します。$("p>span")とするとpタグ内にある子spanのみ対象となり、孫spanは対象外になります。
サンプル2ではpタグ内にある子spanのみ内容が書き変わります。(サンプル2を実行する

【HTML】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>jQuery Sample</title>
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<h1>jQueryサンプル</h1>
<p><span>軽量でコンパクト</span>なライブラリは?</p>
<p><em>軽量で<span>コンパクト</span>なライブラリ</em>は?</p>
<form>
<input type="button" value="まとめて書き替え" onClick="changeText()">
</form>
</body>
</html>


【JavaScript】
function changeText(){
$("p>span").text("【軽量/高速なライブラリです】");
}


特定のタグが隣り合わせになっている場合の指定も可能です。これは隣接セレクタで使用される+記号を使います。$("h2+p")とするとh2タグの直後にあるpタグが対象になります。$("p+em")ならpタグの直後にあるemタグになります。
サンプル3ではh2タグの直後にあるpタグの内容を書き換えます。(サンプル3を実行する

【HTML】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>jQuery Sample</title>
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<h1>jQueryサンプル</h1>
<p>軽量でコンパクトなライブラリは?</p>
<h2>jQueryの$()</h2>
<p>$()を効率よく利用しましょう</p>
<h3>jQueryのイベント</h3>
<p>イベントも手軽に設定できます</p>
<form>
<input type="button" value="まとめて書き替え" onClick="changeText()">
</form>
</body>
</html>


【JavaScript】
function changeText(){
$("h2+p").text("【軽量/高速なライブラリです】");
}

[目次へ]