jQuery를 사용하여 첫 번째 부모 DIV를 선택하는 방법은 무엇입니까?


95
var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.

위의 상황에서 부모는 ankor입니다.

$ (this)의 첫 번째 부모 DIV를 얻으려면 코드가 어떻게 생겼을까 요?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

* 기본적으로 $ (this)의 첫 번째 부모 DIV의 클래스를 얻고 싶습니다.

고마워

답변:


161

.closest()지정된 선택기까지 DOM 트리를 탐색하는 데 사용 합니다.

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
parents("div")횡단 반환 모든 부모 DIV 당신이 사용해야입니다 .eq(0)당신이 원하는 단지 하나를 반환이 있는지 확인 후
MEO

3
성능 측면에서 사용하는 것이 더 좋습니다. .parents('div').eq(0)jQuery가 팔로우하는 지갑 CSS 선택기 를 사용 하여 첫 번째 요소 만 필터링하면 성능이 약간 향상됩니다. jQuery
Noah Whitmore

@NoahWhitmore 수정했습니다. closest()부모를 제외한 모든 부모를 반환하지 않도록 사용됩니다 div.
Shef

41

을 사용 .closest()하면 주어진 선택자와 일치하는 첫 번째 상위 요소를 가져옵니다 'div'.

var classes = $(this).closest('div').attr('class').split(' ');

편집하다:

@Shef가 언급했듯이 .closest()DIV도 발생하면 현재 요소를 반환합니다. 이를 고려하려면 .parent()먼저 다음을 사용하십시오 .

var classes = $(this).parent().closest('div').attr('class').split(' ');

5
.closest()$(this)DIV 요소 인 경우 자체적으로 일치합니다 .
Shef

@Shef, 저에게 새로운 정보였습니다. 감사합니다. 나는 이것을 반영하기 위해 내 대답을 편집했습니다.
Tatu Ulmanen

3
당신은 단순히 사용할 수 있습니다.parents("div").eq(0)
meo

8

div이면 부모가됩니다. 그런 다음 수업을받습니다.

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meo 그게 질문의 내용입니다.
Daniel West


0

가장 좋은 두 가지 옵션은

$(this).parent("div:first")

$(this).parent().closest('div')

물론 클래스 속성을 찾을 수 있습니다.

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.