본문 바로가기

jquery

1.5 DOM 요소의 래퍼 집합 필터링하기

1.5 DOM 요소의 래퍼 집합 필터링하기

 

 

문제점

 - jQuery 래퍼 집합 안에 선택한 DOM 요소들이 들어 있다.

 - 새로운 표현식을 지정하여 표현식과 일치하지 않는 DOM요소들을  집합에서 제거

해결방법

 - filter 메서드는 지정된 표현식과 일치하지 않는 요소를 제외하는 역할을 한다.

 - filter() 메서드는 현재의 요소 집합을 필터링   있게 한다.

 - find 메서드는 현재의 래퍼 집합의 자식 요소들을 대상으로 하여 새로운 요소를 찾음

 

 

<body>

<a href="#" class="external">link</a>

<a href="#" class="external">link</a>

<a href="#">link</a>

<a href="#" class="external">link</a>

<a href="#" class="external">link</a>

<a href="#">link</a>

<a href="#">link</a>

<a href="#">link</a>

<a href="#">link</a>

<a href="#">link</a>

<script type="text/JavaScript" src="../jquery-1.7.2.min.js"></script>

<script type="text/JavaScript">

//4 출력

alert(jQuery('a').filter('.external').length + 'external link');

</script>

</body>

 

 - filter 메서드를 사용하여 class 어트리뷰트 값이 external 설정되어 있지 않은 모든 요소를 원본 집합에서 제거

 

논의

alert(jQuery('a')

.filter(function(index) { return $(this).hasClass('external');})

.length);

 - 현재 요소와 동일 컨텍스트를 가지고 호출됨

 - 함수 안에서 $(this) 사용한다면그는 래퍼 집합 안에 있는 각각의 DOM 요소를 참조한다.

 - 래퍼 집합 안에 있는 각각의 <a> 요소들이 external이라는 클래스 값을 가지는지(hassClass())확인

 - 만일 true 라면 해당 요소가 집합에 유지되고 false 라면 집합에서 제거 된다.