ホームページ > ウェブフロントエンド > jsチュートリアル > jQuery トラバーサル - Closest() メソッドの紹介と、parents()_jquery との違いの分析

jQuery トラバーサル - Closest() メソッドの紹介と、parents()_jquery との違いの分析

WBOY
リリース: 2016-05-16 17:35:10
オリジナル
1542 人が閲覧しました

closest() 方法获得匹配选择器的第一个祖先元素从当前元素开始沿 DOM 树向上。

语法:

.closest(selector)

参数selector为字符串值,包含匹配元素的选择器表达式。

如果给定表示 DOM 元素集合的 jQuery 对象,.closest() 方法允许我们检索 DOM 树中的这些元素以及它们的祖先元素,并用匹配元素构造新的 jQuery 对象。.parents() 和 .closest() 方法类似,它们都沿 DOM 树向上遍历。两者之间的差异尽管微妙,却很重要:

.closest() .parents()
从当前元素开始 从父元素开始
沿 DOM 树向上遍历,直到找到已应用选择器的一个匹配为止。 沿 DOM 树向上遍历,直到文档的根元素为止,将每个祖先元素添加到一个临时的集合;如果应用了选择器,则会基于该选择器对这个集合进行筛选。 
返回包含零个或一个元素的 jQuery 对象 返回包含零个、一个或多个元素的 jQuery 对象

まず次の例を見てください。closest() を使用してイベントの委任を完了する方法を示しています。最も近いリスト要素またはその子孫要素をクリックすると、黄色の背景が切り替わります
コードをコピー コードは次のとおりです。









  • クリックしてください!
  • クリックしてください!


<script><br> $( document ) .bind("click", function( e ) {<br> $( e.target ).closest("li").toggleClass("hilight");<br> });<br></script>



1. 「You can also」をクリックすると色が変わります。これは、最近接要素が現在の要素から上に向かってトラバースされるためです。 parents() メソッドとは異なり、現在の要素の親要素から開始して上方向にトラバースします。

2. Click me!をクリックすると色も変わります。これも上記の手順を経て、現在の要素から上に一致します。ただし、 は条件を満たさず、上に行くときに

  • に遭遇します。
    3. デモの例については、http://www.w3school.com.cn/tiy/t.asp?f=jquery_traversing_closest
  • をご覧ください。

    例 2:

    コードをコピー コードは次のとおりです:


    • I


      • A


        • 1

        • ">2
          "
        • 3

        • "

        "

      • C



    • III



    コードをコピー コードは次のとおりです:

    $('li.item-a').closest('ul').css('background-color', 'red');

    結果:

    これにより、レベル 2

      の色が変更されます。これは、その要素が DOM ツリーを上に移動するときに最初に見つかったものであるためです。

      以下に示すように:

      要素を検索しているとします。

      $('li.item-a').closest('li').css('background-color', 'red');
      ログイン後にコピー

      これにより、リスト項目 A の色が変更されます。 .closest() メソッドは、DOM ツリーを上にたどる前に、セレクターが項目 A と一致するまで li 要素自体から検索します。

      例 3

      DOM 要素をコンテキストとして渡し (つまり、検索の最大範囲を制限し)、その中で最も近い要素を検索できます。

      コードをコピー コードは次のとおりです。

      var listItemII = document.getElementById('ii ');
      $('li.item-a').closest('ul', listItemII).css('background-color', 'red');
      $('li.item-a ').closest('#one', listItemII).css('background-color', 'green');

      上記のコードはレベル 2
        の色を変更します。これは両方ともリストであるため、項目 A の最初の祖先はリスト項目 II の子孫でもあります。

        レベル 1

          はリスト項目 II の子孫ではないため、色は変更されません。
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート