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 라면 집합에서 제거 된다.
'jquery' 카테고리의 다른 글
1.4 특정 컨텍스트 안에서 DOM 요소 선택하기 (0) | 2017.11.15 |
---|---|
1.2 Dom은 로드되었지만 페이자가 로드되기 전에 jQuery/자바스크립트 실행하기 (0) | 2017.11.15 |
Chapter 5. 메뉴, 탭, 툴팁, 패널 (0) | 2017.11.15 |
7. 효과 (0) | 2017.11.15 |