필터링 메소드
필터링(filtering) 메소드
DOM 트리에서 선택한 요소를 필터링하기 위한 메소드는 다음과 같다.
.first( ) 메소드와 last( ) 메소드
.first( ) 메소드는 선택한 요소 중에서 첫 번째 요소를 선택하고, .last( ) 메소드는 마지막 요소를 선택한다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("#firstBtn").on("click", function() { $("li").first() // 선택한 <li>요소 중에서 첫 번째 요소만을 선택함. .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); $("#lastBtn").on("click", function() { $("li").last() // 선택한 <li>요소 중에서 마지막 요소만을 선택함. .css({"border": "2px solid orange"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.first() 메소드와 .last() 메소드</h1> <ul> <li>첫 번째 아이템이에요!</li> <li>두 번째 아이템이에요!</li> <li>세 번째 아이템이에요!</li> </ul> <button id="firstBtn">first()</button> <button id="lastBtn">last()</button> </body> </html> | cs |
실행결과 :
.eq( ) 메소드
.eq( ) 메소드는 선택한 요소 중에서 전달받은 인덱스에 해당하는 요소를 선택합니다.
이때 선택한 요소 집합의 맨 처음 요소를 인덱스 0으로 놓고, 앞에서부터 검색한다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("#clockwiseBtn").on("click", function() { $("li").eq(1) // 선택한 <li>요소 중에서 두 번째 요소만을 선택함. .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); $("#counterBtn").on("click", function() { $("li").eq(-1) // 선택한 <li>요소 중에서 뒤에서부터 첫 번째 요소만을 선택함. .css({"border": "2px solid orange"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.eq() 메소드</h1> <ul> <li>첫 번째 아이템이에요!</li> <li>두 번째 아이템이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <button id="clockwiseBtn">eq(1)</button> <button id="counterBtn">eq(-1)</button> </body> </html> | cs |
실행결과 :
.filter( ) 메소드
.filter( ) 메소드는 선택한 요소 중에서 전달받은 선택자에 해당하거나, 함수 호출의 결과가 참(true)인 요소를 모두 선택한다.
이 메소드는 인수로 선택자나 제이쿼리 객체, HTML DOM 요소 등을 전달받을 수 있다.
또한, 요소 집합의 각 요소를 검사할 수 있는 함수를 전달할 수도 있다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { $("li").filter(":odd") // 선택한 <li>요소 중에서 인덱스가 홀수인 요소만을 선택함. .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.filter() 메소드</h1> <ul> <li>첫 번째 아이템이에요!</li> <li>두 번째 아이템이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <p>제이쿼리에서 인덱스는 언제나 0부터 시작합니다!!</p> <button>인덱스가 홀수인 요소</button> </body> </html> | cs |
실행결과 :
제이쿼리에서 인덱스는 언제나 0부터 시작합니다!!
.not( ) 메소드
.not( ) 메소드는 선택한 요소 중에서 전달받은 선택자에 해당하거나, 함수 호출의 결과가 참(true)인 요소를 제외한 나머지 요소를 모두 선택한다.
즉, .filter( ) 메소드와는 정반대로 동작하여 요소를 선택한다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { $("li").not(":lt(2)") // 선택한 <li>요소 중에서 인덱스가 2보다 작지 않은 요소만을 선택함. .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.not() 메소드</h1> <ul> <li>첫 번째 아이템이에요!</li> <li>두 번째 아이템이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <p>제이쿼리에서 인덱스는 언제나 0부터 시작합니다!!</p> <button>인덱스가 2보다 작지 않은 요소</button> </body> </html> | cs |
실행결과 :
제이쿼리에서 인덱스는 언제나 0부터 시작합니다!!
.has( ) 메소드
.has( ) 메소드는 선택한 요소 중에서 전달받은 선택자에 해당하는 요소를 자손 요소로 가지고 있는 요소를 모두 선택한다.
다음 예제는 선택한 <li>요소 중에서 자손 요소로 <span>요소를 가지고 있는 요소만의 스타일을 변경하는 예제이다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { // 선택한 <li>요소 중에서 자손 요소로 <span>요소를 가지고 있는 요소만을 선택함. $("li").has("span") .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.has() 메소드</h1> <ul> <li><span>첫 번째 아이템</span>이에요!</li> <li><span>두 번째 아이템</span>이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <button>자손 요소로 span 요소를 가지는 요소</button> </body> </html> | cs |
실행결과 :
.is( ) 메소드
.is( ) 메소드는 선택한 요소 중에서 전달받은 선택자에 해당하는 요소가 하나라도 존재하면 참을 반환한다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { // 선택한 <span>요소의 조상 요소 중에서 <ul>요소가 하나라도 존재하면 true를 반환함. if ($("span").parents().is("ul")) { $("#text").html("span 요소의 조상 요소에는 ul 요소도 존재합니다."); } }); }); </script> </head> <body> <h1>.is() 메소드</h1> <ul> <li><span>첫 번째 아이템</span>이에요!</li> <li><span>두 번째 아이템</span>이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <button>span 요소의 조상 요소에는 ul 요소도 존재하는가?</button> <p id="text"></p> </body> </html> | cs |
실행결과 :
.map( ) 메소드
.map( ) 메소드는 선택한 요소 집합의 각 요소마다 지정된 콜백 함수를 실행하고, 그 반환값으로 구성된 제이쿼리 객체를 반환한다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { // 선택한 <li>요소마다 콜백함수를 실행하여 각 <li>요소의 id 값을 반환함. var ids = $("li").map(function() { return this.id; }) .get() // 반환된 모든 id 값을 하나의 배열로 반환함. .join(); // 배열의 모든 요소를 쉼표(,)로 구분하는 하나의 문자열로 반환함. $("#text").html(ids); }); }); </script> </head> <body> <h1>.map() 메소드</h1> <ul> <li id="one">첫 번째 아이템이에요!</li> <li id="two">두 번째 아이템이에요!</li> <li id="three">세 번째 아이템이에요!</li> <li id="four">네 번째 아이템이에요!</li> </ul> <button>li 요소의 모든 id 값을 출력!</button> <p id="text"></p> </body> </html> | cs |
실행결과 :
.slice( ) 메소드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>jQuery Filtering</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $(function() { $("button").on("click", function() { // 선택한 <li>요소 중에서 인덱스가 1과 같거나 그 이상인 요소만을 선택함. $("li").slice(1) .css({"border": "2px solid green"}); // 해당 요소의 CSS 스타일을 변경함. }); }); </script> </head> <body> <h1>.slice() 메소드</h1> <ul> <li>첫 번째 아이템이에요!</li> <li>두 번째 아이템이에요!</li> <li>세 번째 아이템이에요!</li> <li>네 번째 아이템이에요!</li> </ul> <button>인덱스가 1이상인 요소!</button> <p id="text"></p> </body> </html> | cs |
실행결과 :
필터링 메소드
메소드 |
설명 |
.first( ) |
선택한 요소 중에서 첫 번째 요소를 선택함. |
.last( ) | 선택한 요소 중에서 마지막 요소를 선택함. |
.eq( ) | 선택한 요소 중에서 전달받은 인덱스에 해당하는 요소를 선택함. |
.filter( ) | 선택한 요소 중에서 전달받은 선택자에 해당하거나, 함수 호출의 결과가 참(true)인 요소를 제외한 나머지 요소를 모두 선택함. |
.not | 선택한 요소 중에서 전달받은 선택자에 해당하거나, 함수 호출의 결과가 참(true)인 요소를 제외한 나머지 요소를 모두 선택함. |
.has( ) | 선택한 요소 중에서 전달받은 선택자에 해당하는 요소를 자손 요소로 가지고 있는 요소를 모두 선택함. |
.is( ) | 선택한 요소 중에서 전달받은 선택자에 해당하는 요소가 하나라도 존재하면 참(true)을 반환함. |
.map( ) | 선택한 요소 집합의 각 요소마다 콜백 함수를 실행하고, 그 반환값으로 구성된 제이쿼리 객체를 반환함. |
.slice( ) | 선택한 요소 중에서 전달받은 인덱스 범위에 해당하는 요소만을 선택함. |
스타일 설정(프로퍼티/클래스) (0) | 2018.10.25 |
---|---|
요소의 영역(크기/위치) (0) | 2018.10.24 |
요소의 탐색 (0) | 2018.10.24 |
요소의 추가 / 복사 및 삭제 (0) | 2018.10.24 |
요소의 선택 (CSS/제이쿼리 선택자) (0) | 2018.10.23 |