제이쿼리 조상 요소 탐색
웹 페이지에서 DOM 트리를 역방향으로 거슬러 올라가 스타일을 적용하거나 레이아웃을 재배치해야 할 때가 많습니다. 제이쿼리 조상 요소 탐색 메소드를 사용하면 순수 JS 대비 짧은 코드로 부모·조상 노드를 손쉽게 찾을 수 있어 유지보수가 크게 쉬워집니다.
핵심 메소드 한눈에
| 메소드 | 작동 범위 | 특징(요약) |
|---|---|---|
.parent() |
직계 부모 | 선택자 전달 시 조건에 맞는 부모만 선택 |
.parents() |
모든 조상 | 상위 트리 전체 탐색, 선택자 필터 가능 |
.parentsUntil() |
지정 요소 이전 까지 | 중간 단계 범위 지정에 유용 |
.closest() |
자기 자신 포함, 가장 가까운 조상 | 조건에 맞는 첫 번째 요소만 반환 |
키포인트: .closest()는 자기 자신도 검사한다는 점에서 .parents()와 차별화됩니다.
1. .parent() — 직계 부모만 선택
$("p").parent().css("border", "2px solid red"); // 모든 <p>의 부모에 테두리
$("p").parent(".wrapper").addClass("active-parent"); // 조건에 맞는 부모만
- 성능 최상 — 한 단계만 탐색
- 레이아웃 디버깅 : 엘리먼트가 원하는 래퍼 안에 들어있는지 즉시 확인
2. .parents() — 상위 트리 전체 탐색
$("p").parents("div").css("background","#f3f4f6"); // <div> 조상 전체 강조
- 중첩 레이아웃 에서 특정 래퍼까지 연쇄 스타일 적용
- 선택자 없이 호출하면 html 노드까지 모두 반환
3. .parentsUntil() — 범위를 세밀하게
$("p").parentsUntil("div.container")
.css("outline","1px dashed steelblue");
div.container직전 요소까지 탐색 → 중간 단계만 선택- 선택자를 생략하면
.parents()와 동일
4. .closest() — 가장 가까운 조건 일치 항목
$("#origin").closest("section")
.addClass("current-section");
- 자신부터 검사해 첫 번째 일치 요소 반환
- 이벤트 위임 시, 실제 버블링 종착점 판단에 유용
체이닝과 함께 쓰기
$("button.toggle")
.closest("li") // 가장 가까운 <li>
.parent() // <ul>
.toggleClass("open"); // 메뉴 토글
한 줄로 메뉴 트리 전체를 탐색하고, 가독성·성능을 모두 확보할 수 있습니다.
이미지 예시
ALT 속성에 제이쿼리 조상 요소 탐색 키워드를 포함해 SEO 효과를 높여보세요.
질문 정리
.closest()와.parent()의 가장 큰 차이는?.closest()는 자기 자신도 검사하며, 조건 일치 시 바로 반환합니다..parent()는 항상 직계 부모만 반환합니다.
.parentsUntil()을 반복 호출해도 성능이 괜찮을까요?- 범위를 제한하므로
.parents()보다 가볍지만, 다단계 루프에서는 캐싱(예:const $anc = $(this).parentsUntil(...);)이 좋습니다.
- 범위를 제한하므로
- SVG·Shadow DOM에서도 동작하나요?
- SVG 요소에는 정상 작동하지만, Shadow DOM 내부 노드는 일반 DOM 트리 바깥이므로 접근이 제한됩니다.
.closest()와 Vanilla JSElement.closest()차이는?- 기능은 같지만, jQuery 버전은 레거시 브라우저 폴리필을 포함하며 체이닝이 편리합니다.
- 조상 탐색 중 클래스 추가가 스타일 충돌을 일으킬 때 해결법?
- CSS 스코프를
.my-component와 같이 한정하거나, BEM 네이밍을 적용해 전역 스타일 오염을 막으세요.
- CSS 스코프를
댓글남기기