jQuery parent (), parents () 및 closest () 함수의 차이점


184

한동안 jQuery를 사용하고 있습니다. parent()선택기 를 사용하고 싶었습니다 . 나는 또한 closest()선택기를 생각해 냈습니다 . 그들 사이에 차이점을 찾을 수 없습니다. 있어요? 그렇다면 무엇입니까?

무엇 사이의 차이 parent(), parents()그리고 closest()?


6
parent :::: travels 1 단계 back to parent .... :::: parents ::: 모든 부모의 목록을 제공합니다. 첫 번째 만 반환합니다. 이 모든 것을 추가 선택기로 수정할 수 있습니다
Muhammad Umer

답변:


177

closest()DOM 트리에서 선택기와 일치하는 첫 번째 요소를 선택합니다. 현재 요소에서 시작하여 위로 이동합니다.

parent() DOM 트리에서 하나의 요소를 위로 (단일 레벨 위로) 선택합니다.

parents()이 방법은 parent()DOM 트리 와 유사 하지만 일치하는 모든 요소를 ​​선택합니다. 부모 요소에서 시작하여 위로 이동합니다.


10
모든 요소 를 검색하는 것이 .parents()(대신 .parent()) 그렇지 않습니까?
acdcjunior

65
이 대답에는 중요한 점이 없습니다. "가장 가까운"은 현재 요소로 시작하여 위로 이동합니다. 여기서 "부모"는 상위 요소로 시작하여 위로 이동합니다.
앤드류

196

에서 http://api.jquery.com/closest/

.parents ().closest () 메소드는 비슷 그들은 그 DOM 트리까지 모두 트래버스. 미묘하지만 둘 사이의 차이점은 중요합니다.

.closest ()

  • 현재 요소로 시작
  • 제공된 선택기와 일치하는 것을 찾을 때까지 DOM 트리를 이동합니다.
  • 반환 된 jQuery 객체는 0 개 또는 1 개의 요소를 포함합니다.

.부모님()

  • 부모 요소로 시작
  • DOM 트리를 문서의 루트 요소로 이동하여 각 조상 요소를 임시 컬렉션에 추가합니다. 그런 다음 선택기가 제공되면 선택기를 기반으로 해당 콜렉션을 필터링합니다.
  • 반환 된 jQuery 객체는 0 개, 1 개 또는 여러 개의 요소를 포함합니다.

.부모의()

  • DOM 요소 집합을 나타내는 jQuery 객체가 주어지면 .parent () 메서드를 사용하면 DOM 트리에서 이러한 요소의 부모를 검색하고 일치하는 요소에서 새 jQuery 객체를 구성 할 수 있습니다.

참고 : .parents () 및 .parent () 메서드는 비슷하지만 후자는 DOM 트리 위로 단일 수준 만 이동한다는 점이 다릅니다. 또한 $ ( "html"). parent () 메서드는 문서를 포함하는 집합을 반환하지만 $ ( "html"). parents ()는 빈 집합을 반환합니다.

관련 스레드는 다음과 같습니다.


8
그는 실제로 parent ()가 아니라 parent ()에 대해 물었습니다.
ScubaSteve

2
@ScubaSteve :로 답변을 다시 확인하십시오 Note.
Naveed

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.
Naveed

1
@ ScubaSteve, 그렇습니다. 그러나 부모 () 질문이 더 흥미 롭습니다.
폴 드레이퍼

15

미묘하지만 둘 사이의 차이점은 중요합니다.

.closest ()

  • 현재 요소로 시작
  • 제공된 선택기와 일치하는 것을 찾을 때까지 DOM 트리를 이동합니다.
  • 반환 된 jQuery 객체는 0 개 또는 1 개의 요소를 포함합니다.

.부모님()

  • 부모 요소로 시작
  • DOM 트리를 문서의 루트 요소로 이동하여 각 조상 요소를 임시 컬렉션에 추가합니다. 그런 다음 선택기가 제공되면 선택기를 기반으로 해당 콜렉션을 필터링합니다.
  • 반환 된 jQuery 객체는 0 개, 1 개 또는 여러 개의 요소를 포함합니다.

jQuery 문서에서


13
나는 당신의 .parents ()를 묘사한다고 생각합니다.
Muhammad Umer

1

$(this).closest('div')와 둘 사이에 차이가 있습니다$(this).parents('div').eq(0)

기본적으로 closest현재 parents요소에서 요소 일치를 시작하는 반면 부모 (현재 요소보다 한 수준 위)에서 요소 일치를 시작하십시오.

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

0

parent()메소드는 선택된 요소의 직접 부모 요소를 반환합니다. 이 메소드는 단일 레벨의 DOM 트리 만 순회합니다 .

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





 

-1

$(this).closest('div')와 동일합니다 $(this).parents('div').eq(0).


9
$ (this)도 div라면 확실하지 않습니다.
Frank Fajardo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.