jQueryで子要素を取得するfindとchildrenの使い方【サンプル有】
jQueryで子要素を操作する時の処理についてまとめました。
直下の子要素のみを指定する.children
.child()メソッドは、指定した要素の直下の子要素を指定できます。
下記のソースコードは、直下のli要素の文字を赤くする、という指定で処理をしています。
 サンプルコード
<ul class="ex01">
    <li>リスト1</li>
    <li>リスト2</li>
    <li>リスト3</li>
    <ul>
        <li>リスト4-1</li>
        <li>リスト4-2</li>
        <li>リスト4-3</li>
    </ul>
    <li>リスト5</li>
    <li>リスト6</li>
</ul>
<script>
$(function(){
    $('.ex01').children('li').css('color', 'red');
    //$('.ex01 > li').css('color', 'red'); も同じ処理
});
</script>
- リスト1
- リスト2
- リスト3
- リスト4-1
- リスト4-2
- リスト4-3
- リスト5
- リスト6
あくまでセレクタの対象となるのは「直下」の要素なので、子孫要素になる「リスト4~」のli要素にはcssは適用されていません。
また、childrenメソッドを使わなくても、セレクタ上に直接子要素を指定することも出来ます。
$('.ex01 > li').css('color', 'red');
この書き方でも上記の例と同じになります。
しかし、.()で繋げる書き方をせざるを得ない時もありますので、.childrenメソッドも覚えておいてください。
子孫要素を含めて、子要素すべてを指定する.find()
.find()メソッドは、指定した要素の、子孫要素を含めたすべての子要素を指定できます。
下記のソースコードは、子孫要素を含む、すべてのli要素の文字を赤くする、という指定で処理をしています。
 サンプルコード
<ul class="ex02">
    <li>リスト1</li>
    <li>リスト2</li>
    <li>リスト3</li>
    <ul>
        <li>リスト4-1</li>
        <li>リスト4-2</li>
        <li>リスト4-3</li>
    </ul>
    <li>リスト5</li>
    <li>リスト6</li>
</ul>
<script>
$(function(){
    $('.ex02').find('li').css('color', 'red');
    //$('.ex01 li').css('color', 'red'); も同じ処理
});
</script>
- リスト1
- リスト2
- リスト3
- リスト4-1
- リスト4-2
- リスト4-3
- リスト5
- リスト6
cssを書くように、下記のように指定しても同じ処理が実行できます。
$('.ex01 li').css('color', 'red');
子要素の数を取得する
findまたはchildrenを使用し、メソッドチェーンで.lengthを指定することで、子要素の数を取得できます。
 サンプルコード
<ul class="ex03">
    <li>リスト1</li>
    <li>リスト2</li>
    <li>リスト3</li>
    <ul>
        <li>リスト4-1</li>
        <li>リスト4-2</li>
        <li>リスト4-3</li>
    </ul>
    <li>リスト5</li>
    <li>リスト6</li>
</ul>
<p class="ex03_result"></p>
<script>
$(function(){
    var find_cnt = $('.ex03').find('li').length;
    var children_cnt = $('.ex03').children('li').length;
    $('.ex03_result').text('直下の子要素の数は' + children_cnt + '個で、すべての子要素の数は' + find_cnt + '個です。');
});
</script>
- リスト1
- リスト2
- リスト3
- リスト4-1
- リスト4-2
- リスト4-3
- リスト5
- リスト6
子要素があるかないかを判定する
指定した要素に特定の子要素があるか判定する場合でも、lengthが使えます。
子孫要素も含めたすべての子要素の有無が判定となります。
 サンプルコード
<ul class="ex04">
    <li>リスト1</li>
    <li>リスト2</li>
    <li>リスト3</li>
    <ul>
        <li class="hoge">リスト4-1</li>
        <li>リスト4-2</li>
    </ul>
    <li>リスト5</li>
    <li>リスト6</li>
</ul>
<p class="ex04_result"></p>
<script>
$(function(){
    if($('.ex04').find('.hoge').length > 0){
        $('.ex04_result').text('.hogeが見つかりました。');
    }else{
        $('.ex04_result').text('.hogeが見つかりません。');
    }
});
</script>
- リスト1
- リスト2
- リスト3
- リスト4-1
- リスト4-2
- リスト5
- リスト6


ディスカッション
コメント一覧
まだ、コメントがありません