본문 바로가기

학원/복기

[jQuery] 선택자(Selector)

선택자(Selector)



태그 선택자

  • 태그 선택자는 태그명으로 태그를 검색하여 제공하는 선택자이다.
  • 검색된 태그의 Node(Element) 객체로 jQuery 객체를 생성한 후 메소드를 호출할 수 있다.
  • 다수의 태그가 검색된 경우 묵시적 반복에 의해 다수의 jQuery 객체가 생성되어 메소드를 호출한다.

 

예시)

 

[html 태그]

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
</head>
<body>
	<h1>선택자(Selector)</h1>
	<hr>
	<h2 class="item">jQuery Selector-1</h2>
	<h2 id="tag">jQuery Selector-2</h2>
	<h2 class="item">jQuery Selector-3</h2>
	<p>jQuery Selector-4</p>
</body>
</html>

 

[script 태그]

 

$("h2").css("background", "yellow");

 

 


클래스 선택자

  • 클래스 선택자는 태그의 class 속성 값으로 태그를 검색하여 제공하는 선택자이다.
  • 클래스 선택자는 태그 선택자와 구분하기 위해 [.]으로 시작된다.

 

$(".item").css("background", "orange");

 

 


아이디 선택자

  • 아이디 선택자는 태그의 id 속성 값으로 태그를 검색하여 제공하는 선택자이다.
  • 아이디 선택자는 태그 선택자와 구분하기 위해 [#] 으로 시작된다. 

 

$("#tag").css("color", "green");

 

 

 

선택자로 검색된 태그의 jQuery 객체로 메소드를 순차적으로 호출할 수 있는데 이를 메소드 체인(Method Chain)이라고 부른다.

 

$("p").css("font-size", "30px").css("color", "red");

 

메소드를 통해 값을 여러 개 전달하고 싶을때 위의 방법은 비효율적이다. 따라서 값을 여러 개 전달하고 싶을 땐 jQuery 객체로 메소드를 호출할 때 매개변수에 값 대신 Object 객체를 전달하는 것을 더 권장한다.
 Object 객체의 요소를 이용하여 메소드에 필요한 다수의 값을 전달할 수 있다. 

 

$("p").css({"font-size": "30px","color":"red"});

 

 

 


[html 태그]

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
</head>
<body>
	<h1>선택자(Selector)</h1>
	<hr>
	<div id="subject">
		<p>Java 과정</p>
		<div>
			<p>Java 기본문법</p>
			<p>Java OOP</p>
			<p>Java API</p>
		</div>
		
		<p>JSP 과정</p>
		<div>
			<p>스크립트 요소(Script Element)</p>
			<p>지시어(Directive)</p>
			<p>표준 액션 태그(Standard Action Tag)</p>
		</div>
	</div>
</body>
</html>

 

자식 선택자

자식 선택자는 검색된 부모태그에서 첫번째 깊이의 자식태그를 검색하여 제공한다.

 

$("#subject > p").css({"font-size":"25px", "font-weight":"bold"});

 

$(selector).children([selector])

: 선택자로 검색된 부모태그에서 첫번째 깊이의 자식태그를 검색하여 jQuery 객체로 반환하는 메소드 
→ children() 메소드의 매개변수에 선택자를 전달하지 않은 경우 모든 첫번째 깊이의 자식태그를 jQuery 객체로 반환한다. 

 

$("#subject").children("p").css({"font-size":"25px", "font-weight":"bold"});

 

 

후손 선택자

후손 선택자는 검색된 부모태그에서 모든 깊이의 후손태그를 검색하여 제공하는 선택자이다.

 

$("#subject p").css("color", "green");

 

$(selector).find(selector) 

: 선택자로 검색된 부모태그에서 모든 깊이의 후손태그를 검색하여 jQuery 객체로 반환하는 메소드 

 

$("#subject").find("p").css("color", "green");

 

 

자식 선택자 대신 children 메소드를, 후손 선택자 대신 find 메소드를 사용하는 것이 더 효율적이다.

 

 


[html 태그]

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
</head>
<body>
	<h1>선택자(Selector)</h1>
	<hr>
	<h2>jQuery 연습-1</h2>
	<h2 class="normal">jQuery 연습-2</h2>
	<h2 class="normal">jQuery 연습-3</h2>
	<h2>jQuery 연습-4</h2>
	<h2>jQuery 연습-5</h2>
	<h3 class="normal">jQuery 연습-6</h3>
	<h3>jQuery 연습-7</h3>
	<hr>
	<ul>
		<li>선택자(Selector)-1</li>
		<li>선택자(Selector)-2</li>
		<li>선택자(Selector)-3</li>
		<li>선택자(Selector)-4</li>
		<li>선택자(Selector)-5</li>
	</ul>
</body>
</html>

 

필터 선택자

필터 선택자는 선택자로 검색된 다수의 태그 중 클래스 선택자로 특정 태그만을 검색하여 제공하는 선택자이다.

 

$("h2").css("background", "yellow");

//필터 선택자
$("h2.normal").css("background", "green");

 

$(selector).filter(selector)

: 선택자로 검색된 다수의 태그 중에서 filter() 메소드의 매개변수로 전달받은 선택자의 태그를 검색하여 jQuery 객체로 반환하는 메소드

 

$("h2").filter(".normal").css("background", "green");

 

filter() 메소드의 매개변수는 모든 선택자를 전달하여 태그 검색이 가능하다는 장점이 있다.

$(".normal").filter("h2").css("background", "green");

 

 

 

$(selector).not(selector)

: 선택자로 검색된 다수의 태그 중에서 not() 메소드의 매개변수로 전달받은 선택자의 태그로 검색되지 않은 나머지 태그를 jQuery 객체로 반환하는 메소드  

$("h3").filter(".normal").css("background", "silver");

//$(selector).not(selector)
$("h3").not(".normal").css("background", "gold");

 

 

가상 선택자

가상 선택자는 태그의 상태에 의해 태그를 검색하여 제공하는 선택자이다.

 

:nth-child(X) : X 번째 위치한 후손태그를 제공하기 위한 가상 선택자 

$("ul li:nth-child(3)").css("color", "red");

 

CSS의 가상 선택자를 filter() 메소드의 매개변수에 전달하여 호출이 가능하다.

$("ul li").filter(":nth-child(3)").css("color", "red");
$("ul").find("li").filter(":nth-child(3)").css("color", "red");

 

 

:eq(index) : 다수의 검색 태그 중 첨자(Index) 위치에 태그를 제공하기 위한 가상 선택자  

 

$("ul li:eq(2)").css("color", "red");
$("ul li").filter(":eq(2)").css("color", "red");

 

$(selector).eq(index) : 선택자로 검색된 다수의 태그 중 매개변수로 전달받은 첨자 위치의 태그를 검색하여 jQuery 객체로 반환하는 메소드

$("ul li").eq(2).css("color", "red");
$("ul").find("li").eq(2).css("color", "red");

 

 

$(selector).first() : 선택자로 검색된 다수의 태그 중 첫번째 태그를 검색하여 jQuery 객체로 반환하는 메소드 

 

$("ul li").first().css("color", "green");

 

 

eq() 메소드의 매개변수에 -1를 전달하면 마지막 태그를 검색하여 jQuery 객체로 반환한다.

$("ul li").eq(-1).css("color", "blue");

 

$(selector).last() : 선택자로 검색된 다수의 태그 중 마지막 태그를 검색하여 jQuery 객체로 반환하는 메소드

$("ul li").last().css("color", "blue");

 

 

$(selector).next() : 선택자로 검색된 태그에서 다음 위치의 태그를 검색하여 jQuery 객체로 반환하는 메소드

$("ul li").eq(0).next().css("color", "aqua");

 

 

$(selector).prev() : 선택자로 검색된 태그에서 이전 위치의 태그를 검색하여 jQuery 객체로 반환하는 메소드

$("ul li").eq(-1).prev().css("color", "lime");

 

 


속성 선택자

속성 선택자는 태그의 속성 또는 속성값을 비교하여 태그를 검색하여 제공하는 선택자이다.

 

 

[html 태그] 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
</head>
<body>
	<h1>선택자(Selector)</h1>
	<hr>
	<table>
		<tr>
			<td>아이디</td>
			<td><input type="text" name="id"></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type="password" name="passwd"></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><input type="text" name="name"></td>
		</tr>
		<tr>
			<td>이메일</td>
			<td><input type="text" name="email"></td>
		</tr>
	</table>
</body>
</html>

 

[script 태그]

 

$("input[type]").css("border", "2px solid green");
$("input[type='password']").css("color", "red");
$("input[name='email']").css("color", "blue");