jQuery 순회 - is() 메서드

예제

false를 반환합니다. input 요소의 부모는 p 요소입니다:

  var isFormParent = $("input[type='checkbox']").parent();.is("form");
  $("div").text("isFormParent = " + isFormParent);

본인이 직접 시도해 보세요

정의와 사용법

is()는 선택자, 요소 또는 jQuery 객체를 기반으로 일치하는 요소 집합을 검사하며, 이 요소 중 하나라도 지정된 매개변수와 일치하면 true를 반환합니다.

문법

.is(selector)
파라미터 설명
selector 문자열 값, 일치하는 요소의 선택자 표현식을 포함합니다.

상세 설명

다른 필터 메서드와 달리, .is()는 새로운 jQuery 객체를 생성하지 않습니다. 대신, jQuery 객체의 내용을 변경하지 않고 검사할 수 있게 합니다. 이는 콜백 내에서 일반적으로 유용합니다, 예를 들어 이벤트 처리기.

제정보에 따르면, 우리는 두 개의 항목이 서브 요소를 포함하는 목록을 가지고 있습니다:

<ul>
  <li>list <strong>item 1</strong></li>
  <li><span>list item 2</span></li>
  <li>list item 3</li>
</ul>

당신은 <ul> 요소에 클릭 처리기를 추가하고, 코드를 목록 항목 자체가 아닌 서브 요소가 클릭될 때만 트리거하는 것으로 제한할 수 있습니다:

$("ul").click(function(event) {
  var $target = $(event.target);
  if ( $target.is("li") ) {
    $target.css("background-color", "red");
  }
);

본인이 직접 시도해 보세요

현재, 사용자가 첫 번째 목록 항목의 단어 "list" 또는 세 번째 목록 항목의 어떤 단어를 클릭하면, 클릭된 목록 항목은 빨간 배경색으로 설정됩니다. 그러나 사용자가 첫 번째 목록 항목의 item 1 또는 두 번째 목록 항목의 어떤 단어를 클릭하면 아무 변화도 없습니다. 이는 이 상황에서 이벤트의 대상이 <strong>는 <span>라는 것 때문입니다.

주의하시오, 위치 선택자를 포함한 선택자 표현식 문자열, 예를 들어 :first, :gt() 또는 :even에서 위치 필터는 .is()에 전달된 jQuery 객체에 대해, 문서에 대해 적용되지 않습니다. 따라서 위의 HTML에 대해 $("li:first").is("li:last")와 같은 표현식은 true를 반환하지만 $("li:first-child").is("li:last-child")는 false를 반환합니다。

함수 사용

이 메서드의 두 번째 사용법은 함수 대신 선택자를 기반으로 한 관련 요소 표현식을 계산하는 것입니다. 각 요소에 대해 함수가 true를 반환하면 .is()도 true를 반환합니다. 예를 들어, 아래는 조금 더 복잡한 HTML 단편입니다:

<ul>
  <li><strong>list</strong> item 1 - one strong tag</li>
  <li><strong>list</strong> item <strong>2</strong> -
    two <span>strong 태그</span></li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

당신은 각 <li>에 click 처리기를 추가하여 클릭된 <li> 내부의 <strong> 요소의 수를 계산할 수 있습니다:

$("li").click(function() {
  var $li = $(this),
    isWithTwo = $li.is(function() {
      return $('strong', this).length === 2;
    };
  if ( isWithTwo ) {
    $li.css("background-color", "green");
  } else {
    $li.css("background-color", "red");
  }
);

본인이 직접 시도해 보세요