jQuery 「走査系のメソッド」 条件にマッチした要素の親要素を抽出する

要素の集合から、条件にマッチした要素の親要素を抽出します。引数に何も指定しなければ、すべての親要素を抽出します。引数にセレクタを記述すれば、条件に応じてフィルタされた親要素の集合が取得できます。.parent()と.parents()は非常に似たメソッドですが、.parent()が直接の親要素だけを返すのに対して、.parents()は階層をさかのぼって先祖となる要素をすべて返します。.parents()に何もセレクタを指定しない場合、html要素までさかのぼってすべての親要素が返されます。なお、結果として得られる要素集合には、探索条件にマッチした要素そのものは含まれません。返されるのは親だけで「本人」は除かれます。

書式

.parent([セレクタ])
.parents([セレクタ])
$('li').parent()
$('li').parent('.mydiv')
$('li').parents()
$('li').parents('.mydiv')

サンプル

.parent()と.parents()の違いを確認する

※DOMの「親要素」を取得するのであって系統図の「親」ではない。

<body>
    <div class="main">
    <div class="header">
      <h1> サンプル </h1>
    </div>
      <div class="content">
      <div class="tree" id="FamilyTreeDiv">
      <ul>
      <li>
        <div>
          <span class="direct">おじいちゃん</span>
        </div>
        <ul>
          <li>
              <div>
                <span class="direct">お父さん</span>
              </div>
            <ul> 
              <li>
                <div>
                  <span class="direct">お母さん</span>
                  <ul>
                    <li>
                      <div id="felidae">
                          <span class="notdirect">工藤太郎</span><br> 
                          <span class="notdirect">工藤花子</span><br>
                          <span class="direct">山田次郎</span><br> 
                          <span class="notdirect">工藤三郎</span><br> 
                          <span id="child" class="notdirect">工藤恵子</span>
                       </div>
                      </li> 
                    </ul>
                  </div>
                </li>
              </ul>
            </li>
            <li>
              <div><span class="notdirect">父親の兄弟</span></div>
            </li>
          </ul>
        </li>
      </ul> 
    </div>
    <button class="button" id="button1" type="button" name="button">子供の親</button>
    <button class="button" id="button2" type="button" name="button">子供の先祖</button>
    </div>
    <div class="footer">
    <hr>
    <p class="copyright">2019 xxxx all rights reserved.</p>
    </div>
    </div>
    <script>
      $(document).ready(function(){
        $('#button1').on('click', function() {
          $('#child').parent().css('backgroundColor','green').css('color','white');
        });
        $('#button2').on('click', function() {
          $('#child').parents().css('backgroundColor','green').css('color','white');
        });
      });
    </script>
</body>
実行結果
「子供の親」ボタンをクリックした後
実行結果
「子供の先祖」ボタンをクリックした後