jQueryを使ってみよう その3

jQueryのノード取得についての続きです。まずはとんでもない勘違いのままエントリーしてしまった前回の最後の項目の説明から始めたいと思います。

以下のようなDOMがあるとします。

<div>
	<p>段落A1</p>
	<p>段落A2</p>
	<p>段落A3</p>
</div>

<div>
	<p>段落B1</p>
	<p>段落B2</p>
	<p>段落B3</p>
</div>

<div>
	<h2>見出しC1</h2>
	<ul>
		<li>項目C1</li>
		<li>項目C2</li>
	</ul>
	<p>段落C1</p>
	<p>段落C2</p>
	<p>段落C3</p>
</div>

4. $('p:nth-child(2)') 【2番目の子要素であるすべてのpを取得】
[取得できる要素]

<p>段落A2</p>
<p>段落B2</p>

[コメント]
ここでは<p>段落C2</p>が取得されない点が最大のポイントです。僕はてっきり「ある親要素に含まれるp要素の中から2番目のものを全て取得する」ものかと勘違いしていたのですが、そうではありません。取得されるのは「ある親要素に含まれる2番目の子要素で、かつそれがp要素の場合」です。
3番目の<div>ブロックに着目してみると、ここでは2番目の子要素は<ul>ですので、<p>段落C2</p>は取得されません。


5. $('p:first-child') 【最初の子要素であるすべてのpを取得】
[取得できる要素]

<p>段落A1</p>
<p>段落B1</p>

[コメント]
これは$('p:nth-child(1)')と同じです。「最初の子要素で、かつそれがp要素の場合」取得されます。「全てのp要素の中の最初のp要素を取得」ではありません。


6. $('p:last-child') 【最後の子要素であるすべてのpを取得】
[取得できる要素]

<p>段落A3</p>
<p>段落B3</p>
<p>段落C3</p>

[コメント]
最初最後の子要素で、かつそれがp要素の場合」取得されます。くどいようですが「全てのp要素の中の最後のp要素を取得」ではありませんのでご注意を。