AD JB Toolbox 01

jQuery / Reference / .wrap()

.wrap()은 선택한 요소 각각을 별도의 HTML 구조로 감쌉니다. 두 요소를 선택했다면 일반적으로 두 개의 감싸는 구조가 생기며, 모두를 하나로 묶는 .wrapAll()과 다릅니다.

문법과 적용 범위

$(".item").wrap("<div class='group'></div>");
$(".item").wrap("<div class='outer'><div class='inner'></div></div>");

감싸는 구조는 HTML 문자열, DOM 요소, jQuery 객체 또는 선택자로 지정할 수 있습니다. 여러 요소를 가진 jQuery 객체나 선택자를 전달하면 첫 요소를 사용합니다. 중첩 구조도 가능하지만 선택한 요소가 들어갈 가장 안쪽 요소는 하나로 정하세요. 반환값은 감싸는 새 부모가 아니라 원래 선택 집합입니다.

jQuery 공식 문서의 .wrap() 정의와 인수에서 다른 호출 형태도 확인할 수 있습니다.

전체 실행 예제

아래 코드를 UTF-8 형식의 example.html 파일로 저장한 뒤 브라우저로 여세요. 예제는 jQuery 4.0.0 일반 빌드를 외부 주소에서 불러오므로 인터넷 연결이 필요합니다. 문서가 준비된 뒤 실행하도록 $(function () { ... }) 안에 코드를 작성했습니다.

<!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery wrap 예제</title>
  <style>
    body { margin: 24px; font-family: sans-serif; line-height: 1.6; }
    .marked { background: #fff0b3; border: 2px solid #835b00; }
    .active { color: #a00000; font-weight: bold; }
    button, input, select { font: inherit; }
    #output { white-space: pre-wrap; overflow-wrap: anywhere; }
  </style>
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
</head>
<body>
<div id="container">
  <p class="item">첫 문단</p>
  <p class="item">둘째 문단</p>
</div>
  <p id="output" aria-live="polite"></p>
  <script>
    $(function () {
      $(".item").wrap("<div class='group marked'></div>");
      $("#output").text("부모 수: " + $("#container > .group").length +
        " / 각 부모의 문단 수: " + $(".group").map(function () { return $(this).children("p").length; }).get().join(", "));
    });
  </script>
</body>
</html>

실행 결과 확인

각 문단에 별도의 테두리가 생기고 결과는 부모 수: 2 / 각 부모의 문단 수: 1, 1입니다. Elements에서 container 아래에 group 두 개가 있고 그 안에 각각 문단이 들어 있는지 확인할 수 있습니다.

사용할 때 주의할 점

  • 같은 코드를 다시 실행하면 부모가 중첩해서 추가됩니다. 동적으로 반복 실행할 때는 이미 원하는 부모를 가졌는지 먼저 확인하세요.
  • 감싸는 HTML에 같은 id를 지정하면 여러 부모가 중복 id를 갖게 됩니다. 반복 구조에는 클래스를 사용하세요.
  • 감싸는 태그는 문서 구조상 자식을 담을 수 있어야 합니다. 문단 전체를 span이나 다른 p로 감싸는 등 부적절한 중첩을 피하세요.
  • 모든 요소를 한 부모에 모으려면 .wrapAll()을 사용하고, 만든 부모만 풀려면 자식에서 .unwrap(".group")을 호출합니다.

용도를 비교하려면 .wrapAll()로 한 구조에 모으기, .unwrap()으로 부모 제거하기을 참고하세요.

같은 카테고리의 다른 글
jQuery / Reference / .attr()

jQuery / Reference / .attr()

HTML 속성의 읽기·설정 방법과 반환값을 확인하고, 현재 입력값·체크 상태·ARIA 속성의 처리 차이를 설명합니다.

jQuery / Reference / .width()

jQuery / Reference / .width()

내용 너비와 padding·border를 포함한 너비를 비교하고, border-box에서 width를 읽고 설정하는 결과를 설명합니다.

jQuery / Reference / .slideUp()

jQuery / Reference / .slideUp()

내용을 접어 숨기는 문법과 시간·easing·완료 콜백을 설명하고, 연속 클릭과 처음 상태로 되돌리는 예제를 제공합니다.

jQuery / Reference / .unwrap()

jQuery / Reference / .unwrap()

직접 부모를 조건부로 제거하면서 자식과 형제를 보존하는 방법, 스타일·이벤트·복원 시 주의점을 설명합니다.

jQuery / Reference / .addClass()

jQuery / Reference / .addClass()

기존 클래스를 유지하며 한 개 또는 여러 클래스를 추가하는 방법과 CSS가 적용되지 않을 때의 확인 사항을 설명합니다.

jQuery / Reference / .slideToggle()

jQuery / Reference / .slideToggle()

내용의 접기·펼치기를 전환하는 예제와 버튼 상태 연결, 효과 큐 및 전체 완료 처리 방법을 설명합니다.

jQuery / Reference / .appendTo()

jQuery / Reference / .appendTo()

삽입할 내용을 먼저 지정해 대상의 마지막 자식으로 넣는 방법과 반환 집합, 이동·복제 동작을 설명합니다.

jQuery / Reference / .css()

jQuery / Reference / .css()

계산된 스타일 읽기와 인라인 스타일 설정·해제 방법을 확인하고, 단위 및 jQuery 4.0의 숫자 처리 차이를 설명합니다.

jQuery / Reference / .slideDown()

jQuery / Reference / .slideDown()

숨겨진 내용을 펼치는 문법과 초기 표시 상태를 설명하고, 효과 큐·완료 콜백·동작 줄이기를 처리하는 예제를 제공합니다.

jQuery / Reference / .insertBefore()

jQuery / Reference / .insertBefore()

넣을 요소를 먼저 지정해 대상 앞에 형제로 삽입하는 문법과 before의 차이, 이동·복제 동작을 설명합니다.