AD JB Toolbox 01

jQuery / Reference / :contains()

:contains("문자열")은 지정한 문자열을 텍스트에 포함한 요소를 선택합니다. 대소문자를 구분하고 자식 요소의 텍스트도 검사하므로, 정확히 일치하는 문단만 찾는 선택자와는 다릅니다.

문법과 적용 범위

$('p:contains("안내")');
$("#messages p").filter(':contains("jb")');

태그 사이에 보이는 텍스트가 검사 대상이며 input의 value나 이미지의 alt를 검색하는 기능은 아닙니다. 부분 문자열이 일치하면 선택되므로 jbdui도 jb 검색에 포함됩니다. 부모와 자식을 모두 대상으로 삼으면 같은 문자열을 가진 여러 단계의 요소가 선택될 수 있습니다. 이 선택자는 jQuery 확장이며 표준 CSS 선택자 API에서 사용할 수 없습니다.

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

전체 실행 예제

아래 코드를 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 contains-selector 예제</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="messages">
  <p id="a">일반 문단</p>
  <p id="b">jb 안내</p>
  <p id="c">JB 안내</p>
  <p id="d">문자열 jbdui</p>
  <p id="e"><span>jb</span> 포함 문단</p>
</div>
  <p id="output" aria-live="polite"></p>
  <script>
    $(function () {
      const $found = $("#messages p").filter(':contains("jb")');
      $found.addClass("marked");
      $("#output").text($found.map(function () { return this.id; }).get().join(", "));
    });
  </script>
</body>
</html>

실행 결과 확인

b, d, e가 강조되고 결과는 b, d, e입니다. c의 대문자 JB는 일치하지 않고, e는 span 안에 문자열이 있어도 선택됩니다.

동적인 검색어 비교

const query = "JB".toLocaleLowerCase();
const $found = $("#messages p").filter(function () {
  return $(this).text().toLocaleLowerCase().includes(query);
});

앞의 전체 예제에서 선택 코드 대신 쓰면 b, c, d, e가 선택됩니다. 따옴표를 포함한 검색어도 선택자 문법으로 해석되지 않고 텍스트로 비교됩니다.

사용할 때 주의할 점

  • 정확한 문자열 일치가 필요하면 .filter() 안에서 $(this).text().trim() === 검색어처럼 비교하세요. 표시 공백과 줄바꿈도 결과에 영향을 줍니다.
  • 검색창의 값을 선택자 문자열에 직접 붙이면 따옴표·괄호 때문에 선택자가 깨질 수 있습니다. 동적인 검색어는 함수 안에서 .text().includes()로 비교하는 편이 단순합니다.
  • 대소문자를 무시하려면 검색어와 대상 텍스트를 같은 방식으로 소문자화해 비교해야 합니다. 빈 검색어는 모든 문자열에 포함되므로 별도 처리를 정하세요.

용도를 비교하려면 .find()로 검색 범위 좁히기을 참고하세요.

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

jQuery / Reference / .val()

현재 입력값과 다중 선택 값을 읽고 설정하는 방법, change 이벤트와 체크 상태의 차이를 설명합니다.

jQuery / Reference / .slideUp()

jQuery / Reference / .slideUp()

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

jQuery / Reference / .after()

jQuery / Reference / .after()

대상의 뒤에 형제 요소를 추가하는 방법과 기존 요소 이동, append 및 insertAfter와의 차이를 설명합니다.

jQuery / Reference / .appendTo()

jQuery / Reference / .appendTo()

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

jQuery / Reference / .addBack()

jQuery / Reference / .addBack()

탐색 직전의 집합을 다시 합치는 방법과 선택자 필터의 적용 범위를 예제로 확인합니다.

jQuery / Reference / :contains()

jQuery / Reference / :contains()

텍스트의 부분 일치와 대소문자 구분을 예제로 확인하고, 자식 텍스트와 동적인 검색어를 처리하는 방법을 설명합니다.

jQuery / Reference / .unwrap()

jQuery / Reference / .unwrap()

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

jQuery / Reference / .append()

jQuery / Reference / .append()

내용을 마지막 자식으로 추가하는 문법과 실행 결과를 확인하고, 기존 요소의 이동·다중 대상 복제·입력값 처리 시 주의점을 설명합니다.

jQuery / Reference / .prependTo()

jQuery / Reference / .prependTo()

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

jQuery / Reference / .slideToggle()

jQuery / Reference / .slideToggle()

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