1 분 소요

웹 페이지에서 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 효과를 높여보세요.


질문 정리

  1. .closest().parent()의 가장 큰 차이는?
    • .closest()자기 자신도 검사하며, 조건 일치 시 바로 반환합니다. .parent()는 항상 직계 부모만 반환합니다.
  2. .parentsUntil()을 반복 호출해도 성능이 괜찮을까요?
    • 범위를 제한하므로 .parents() 보다 가볍지만, 다단계 루프에서는 캐싱(예: const $anc = $(this).parentsUntil(...);)이 좋습니다.
  3. SVG·Shadow DOM에서도 동작하나요?
    • SVG 요소에는 정상 작동하지만, Shadow DOM 내부 노드는 일반 DOM 트리 바깥이므로 접근이 제한됩니다.
  4. .closest()와 Vanilla JS Element.closest() 차이는?
    • 기능은 같지만, jQuery 버전은 레거시 브라우저 폴리필을 포함하며 체이닝이 편리합니다.
  5. 조상 탐색 중 클래스 추가가 스타일 충돌을 일으킬 때 해결법?
    • CSS 스코프를 .my-component 와 같이 한정하거나, BEM 네이밍을 적용해 전역 스타일 오염을 막으세요.

카테고리:

업데이트:

댓글남기기