jQueryのparent()、parents()、closest()関数の違い


184

私はしばらくjQueryを使用しています。parent()セレクターを使いたかった。closest()セレクターも思いつきました。それらの違いを見つけることができませんでした。何かありますか?はいの場合、何ですか?

どのような違いがあるparent()parents()closest()


6
parent :::: travels親に1ステップ戻ります.... :::: parents :::すべての親のリストを表示します.... :::: closest :::条件が見つかるまで兄弟間を戻ります最初のものだけを返します。これらはすべて、追加のセレクターを使用して変更できます
Muhammad Umer

回答:


177

closest()DOMツリーから、セレクターに一致する最初の要素を選択します。現在の要素から始まり、上に移動します。

parent() DOMツリーの1つ上の要素(単一レベル上)を選択します。

parents()メソッドは似てparent()いますが、DOMツリーの上のすべての一致する要素を選択します。親要素から始まり、上に移動します。


10
.parents()(の代わりに.parent()すべての要素を取得するのではないですか?
acdcjunior 2014

65
この回答には重要な点が欠けています。「最も近い」は現在の要素から始まり、上に移動しますが、「親」は親要素から始まり、上に移動します。
アンドリュー、

196

http://api.jquery.com/closest/から

.parents().closest()メソッドは、DOMツリーアップどちらトラバースという点で類似しています。微妙ではありますが、2つの違いは重要です。

.closest()

  • 現在の要素で始まる
  • 指定されたセレクターに一致するものが見つかるまで、DOMツリーを上に移動します。
  • 返されたjQueryオブジェクトには0個または1個の要素が含まれています

。親()

  • 親要素で始まる
  • DOMツリーをドキュメントのルート要素に移動し、各祖先要素を一時的なコレクションに追加します。セレクターが指定されている場合は、セレクターに基づいてそのコレクションをフィルター処理します
  • 返されたjQueryオブジェクトには、0個、1個、または複数の要素が含まれています

。親()

  • 一連のDOM要素を表すjQueryオブジェクトがある場合、.parent()メソッドを使用すると、DOMツリーでこれらの要素の親を検索し、一致する要素から新しいjQueryオブジェクトを構築できます。

注: .parents()メソッドと.parent()メソッドは似ていますが、後者はDOMツリーの1レベル上を移動するだけです。また、$( "html")。parent()メソッドはドキュメントを含むセットを返し、$( "html")。parents()メソッドは空のセットを返します。

ここに関連するスレッドがあります:


8
彼は実際には、parents()ではなく、parent()について尋ねました。
ScubaSteve 2013年

2
@ScubaSteve:で回答をもう一度確認してくださいNote
2014年

1
The .parents() and .parent() methods are similar, except that the latter only travels a single level up the DOM tree. Also, $("html").parent() method returns a set containing document whereas $("html").parents() returns an empty set.
2014年

1
@ScubaSteve、ええ、でもparents()の質問はもっと面白いです。
Paul Draper

15

微妙ではありますが、2つの違いは重要です。

.closest()

  • 現在の要素で始まる
  • 指定されたセレクターに一致するものが見つかるまで、DOMツリーを上に移動します。
  • 返されたjQueryオブジェクトには0個または1個の要素が含まれています

。親()

  • 親要素で始まる
  • DOMツリーをドキュメントのルート要素に移動し、各祖先要素を一時的なコレクションに追加します。セレクターが指定されている場合は、セレクターに基づいてそのコレクションをフィルター処理します
  • 返されたjQueryオブジェクトには、0個、1個、または複数の要素が含まれています

jQuery ドキュメントから


13
ここで.parents()を説明すると思います
Muhammad

1

両者の差がある$(this).closest('div')とは、$(this).parents('div').eq(0)

基本的にclosest、現在のparents要素から一致する要素を開始しますが、親(現在の要素の1レベル上のレベル)から一致する要素を開始します

See http://jsfiddle.net/imrankabir/c1jhocre/1/

0

parent()メソッドは、選択した要素の直接の親要素を返します。このメソッドは、DOMツリーを1レベルだけ上に行き来します。

parents()メソッドを使用すると、DOMツリー内のこれらの要素の祖先を検索できます。指定されたセレクターから始めて上に移動します。

The **.parents()** and **.parent()** methods are almost similar, except that the latter only travels a single level up the DOM tree. Also, **$( "html" ).parent()** method returns a set containing document whereas **$( "html" ).parents()** returns an empty set.

[closest()][3]method returns the first ancestor of the selected element.An ancestor is a parent, grandparent, great-grandparent, and so on.

This method traverse upwards from the current element, all the way up to the document's root element (<html>), to find the first ancestor of DOM elements.

According to docs:

**closest()** method is similar to **parents()**, in that they both traverse up the DOM tree. The differences are as follows:

**closest()**

Begins with the current element
Travels up the DOM tree and returns the first (single) ancestor that matches the passed expression
The returned jQuery object contains zero or one element

**parents()**

Begins with the parent element
Travels up the DOM tree and returns all ancestors that matches the passed expression
The returned jQuery object contains zero or more than one element





 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.