9

jQueryのドキュメントには次のように記載されています

セット内の各要素について、要素自体をテストし、DOM ツリー内のその祖先をたどることによって、セレクターに一致する最初の要素を取得します。

ここでの操作上の単語は、私の目には、祖先です。これは、

elem.closest(selector)

セレクターは elem の祖先ではありません。何も見つかりません。ただし、それが読み取る同じドキュメントの少し下

指定されたセレクターに一致するものが見つかるまで、DOM ツリーを上に移動します

これは、 <body> タグまでずっと行き、その人を取得することを意味すると解釈します。ここでは、親または祖先については言及していません。

私は、正しいのは前者のステートメントであることを示唆しているように見える簡単なフィドルを書き上げました。ただし、ここに投稿して、他の誰かがこれを確認できるかどうかを確認するのが最善だと思いました.

4

4 に答える 4

10

の実装は次の.closest()ように機能します (疑似コード):

while (node) {
  if (node matches selector) {
    return node;
  }
  node := node.parentNode
} 

つまり、親チェーンのみをたどって上にトラバースします。

于 2013-10-19T06:44:03.467 に答える
5

2 番目の引用で「DOM ツリーを上に移動する」とある場合、最初の引用では「DOM ツリーの先祖を上に移動する」ことを意味します。引用された両方のステートメントに違いはありません。1 つはもう 1 つの言い回しですが、たまたま少し具体的ではありません。

于 2013-10-19T06:39:14.263 に答える
1

jQuery closest() は、セレクタの最初の親要素 (HTML タグによって)、またはセレクタ自体 (一致する場合) を選択します。'p' 要素 ($('p#someid')) を選択している場合、'p' 要素から検索を開始し、一致しない場合はその親に移動します。等々

HTML の例:

<div id='select_me'>Div
    <p id='id'>paragraph</p>
</div>

$('#id').closest('div)//div#select_me最も近い親 div としてを選択します

一方

 <p id='select_me'>Div
    <p id='select_me_now'>paragraph</p>
</p>

$('#select_me_now').closest("p");// 自分自身を選択しp#select_me_nowます

于 2013-10-19T06:44:43.120 に答える