테이블에서 전에 썻던 even odd first last 와 같은 방법으로는 한계가 있다.
고로 아래의 방법을 확인해보자.
eq() : 괄호 안의 번호에 해당하는 순서 태그를 지칭
nth-child() : 괄호 안의 식에 해당하는 순서 태그들을 지칭
gt() : 괄호 안의 번호에 초과하는 태그들을 지칭
lt() : 괄호 안의 번호에 미만인 태그들을 지칭
contains() : 특정 문자열을 포함
has() : 특정 태그를 가지고 있는
not() : 해당 선택자와 일치하지 않는 객체
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> <h1>함수 형태의 필터 선택자</h1> <h3>:nth-child() 필터선택자</h3> <table border="1"> <tr> <th>이름</th> <th>혈액형</th> <th>지역</th> </tr> <tr> <td>김김김</td> <td>C형</td> <td><a>달</a></td> </tr> <tr> <td>님님님</td> <td>D형</td> <td>태양</td> </tr> <tr> <td>딤딤딤</td> <td>E형</td> <td>은하계</td> </tr> <tr> <td>림림림</td> <td>C형</td> <td>지구</td> </tr> <tr> <td>밈밈밈</td> <td>D형</td> <td>소행성</td> </tr> <tr> <td>빔빔빔</td> <td>C형</td> <td>집</td> </tr> <tr> <td colspan="2">총원</td> <td>6</td> </tr> </table> <script type="text/javascript"> $(function() { // n번째에 위치하는 객체 선택 $("tr:eq(0)").css({"background":"black", "color":"white"}); // 수열번 째 위치하는 태그 선택(순서로 적용) $("tr:nth-child(2n)").css("background","yellowgreen"); $("tr:nth-child(3n)").css("background", "orange"); // n번째를 초과하는 객체 선택(인덱스 적용) $("tr:gt(6)").css("background", "lightgray"); // n번째 미만에 위치하는 객체 선택 $("tr:lt(7)").css("font-size", "1.5em"); // em은 부모 객체의 font size를 의미 // 특정 문자열을 포함하는 객체 선택 $("tr:contains('A형')").css("color", "red"); // 특정 태그를 가지고 있는 객체 선택 $("td:has(a)").css("color", "white"); // 선택자와 일치하지 않는 객체 선택 $("td:not(:contains('김김김'))").css("color", "lightgray"); }); </script> </body> </html>
앞의 선택자가 태그 이름과 선택자의 조합이었다면
필터링은 메소드 형태로 조건을 괄호로 받는다.
.filter(:odd) 와 같이..
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> <h1>필터링 메소드</h1> <h3>filtering 메소드의 사용법</h3> <p>필터 선택자를 메소드 형태로 제공한다.</p> <h4 class="test">test-1</h4> <h4 class="test">test-2</h4> <h4 class="test">test-3</h4> <h4 class="test">test-4</h4> <h4>test-5</h4> <h4 class="test">test-6</h4> <script type="text/javascript"> $(function() { $("h4:even").css("background", "black").css("color", "white"); // filter() 메소드 사용 $("h4").filter(":even").css("background", "orangered").css("color", "white"); // 함수를 매개변수로 하는 filter() 메소드 사용 $("h4").filter(function(index) { return index % 2 == 1; }).css("background", "yellowgreen").css("color", "black"); // 선택된 요소 중 제일 처음에 있는 요소 리턴 $("h4").first().css("font-size", "1.5em"); // 선택된 요소 중 제일 마지막에 있는 요소 리턴 $("h4").last().text("마지막 요소"); // 인덱스 번호와 일치하는 요소만 리턴 $("h4").eq(3).text("eq()로 선택됨"); // 인자값과 일치하지 않는 요소만 리턴 $("h4").not(".test").css({"background":"yellow", "color":"black"}); }); </script> </body> </html>