본문 바로가기
국비 과정/JQuery

국비 - 1020 ( selector )

by 코딩호야 2022. 10. 20.

selector(셀렉터)

셀렉터는 문서내에서 원하는 엘리먼트를 쉽게 식별하고 이를 추출하기 위해서 
jQuery 에서 제공하는 기술이다.

 

 

selector 의 예 ( 자손 , 자식 차이점 )

<title>인접한 자손 엘리먼트를 노드로 추가하기</title>
	<style type="text/css">
		em{
			font-size: 20pt; line-height:20pt;
			margin: 20px; color:blue;
			}
	</style>
	<script type="text/javascript" src="../js/jquery.js"></script>
	<script type="text/javascript">
	
		$(document).ready(function(){
			$('p em').css('background-color','yellow').each(function(){
				$('.result1').append($(this).text()+"\n");			
				// this 가 가르키는 것은  $('p em') 이다.
			
			});
			$('div > em').css('background-color','pink').each(function(){
				$('.result2').append($(this).text()+"\n");			
				// this 가르키는 것은  $('div > em') 이다.
			});
			
			console.log("검색된 엘리먼트 갯수 : " + $('p em').length);			
			// p의 자손 em 을 모두 찾는의미
			console.log("검색된 엘리먼트 갯수 : " + $('div > em').length); 		
			// div 의 자식 em 을 찾는의미  '>' 는 바로 한단계 밑을 찾는의미이다.
		});
		
	</script>
</head>
<body>
	<p>
		<em>one</em>
		<em>two</em>
		<span><em> three</em></span>
	</p>
	
	<div>
		<em>four</em>
		<span><em> five </em></span>
		<em> six </em>
		<span><em> korea </em></span>
	</div>
	
	<hr size="5" color="green">
		<div>
			<span> ancestor descendant 로 검색된 엘리먼트</span>
			<span class="result1"></span>
		</div>
		
		<div>
			<span> parent > child 로 검색된 엘리먼트 four six</span>
			<span class="result2"></span>
		</div>

</body>
</html>

실행 결과

위코드를 실행해보면 자손과 자식의 차이를 명확하게 구별 할 수 있다.

$('p em') 은 p의 자손 em 을 전부 가르키는 형태이고

$('div > em') 은 div 의 한단계 아래 자식 em 만 가르키는 형태이다. 그래서 밑에 코드에서

각각 $('p em') 에 해당하는 one , two , three 모두 노란색으로  표현되어 자손인것을 확인 할수있고

span 태그로 감싸져있는 em 코드도 자손이기때문에 모두 포함된다.

 

$('div > em') 에 해당하는 four , six 가 핑크색으로 표현되어 div의 자식이 두개인것을 확인 할 수 있다.

div에 span 태그 안의 em 태그는 div > span > em 의 모습으로 생각할수 있으므로 div와 자식이아닌 자손으로 관계가 형성된다 . 그러므로 five와 korea 는 표현되지 않았다. 

 

 

removeClass , addClass 

<title>n 번째 엘리먼트 이후 혹은 이전에
		위치한 엘리먼트에 스타일 해제하기 - ":gt(n) , lt(n)"</title>
<style type="text/css">
		table{table-layout:auto; width: 75%; }
		.textstyle{color:blue; font-weight:bold;
					background-color:#cccc66;}
	</style>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
	$(document).ready(function(){
		$('td').addClass('textstyle');
		$('td:lt(2)').removeClass('textstyle');
		$('td:gt(4)').removeClass('textstyle');
	});
	
	/* removeClass() : jQuery 확장 객체 집합에 속한 모든 엘리먼트에 하나 이상의 클래스를 제거 */
	
</script>
</head>
<body>
	<table>
		<tr><td>zero</td></tr>	
		<tr><td>one</td></tr>	
		<tr><td>two</td></tr>	
		<tr><td>three</td></tr>	
		<tr><td>four</td></tr>	
		<tr><td>five</td></tr>	
		
	</table>

</body>
</html>

실행 결과

add 와 remove 말그대로 더하고 지우는 의미이다.

$('td').addClass('textstyle');          =>   td 모두에게 textstyle 을 적용하라는 의미  
$('td:lt(2)').removeClass('textstyle');   

=> td < 2  ( lt는 < 로 표현된다. )  td 의 인덱스 0 , 1 의 값에 스타일을 지운다
$('td:gt(4)').removeClass('textstyle');

=> td > 4 ( rt 는 > 로 표현된다. ) td 인데스 4 이후 것의 스타일을 지운다.

 

 

Attribute(속성) 을 조건으로 제시하여 엘리먼트를 찾기
-E[A], E[A=V],E[A^=],E[A&=V],E[A*=V]

<title> Attribute(속성) 을 조건으로 제시하여 엘리먼트를 찾기
			-E[A], E[A=V],E[A^=],E[A&=V],E[A*=V] </title>
	<style type="text/css">
	 .spotlight{background-color:#ff0}
	 .redtext{color:red}
	 .bluetext{color:blue}
	 .largetext{font-size:30pt}
	 .italictext{font-style:italic}
	 .box{border:3pt solid #f00}
	</style>
	<script type="text/javascript" src="../js/jquery.js"></script>
	<script type="text/javascript">
		var output = function(selector){
			var resultText = "";
			console.log("\n" + selector + "로 검색된 엘리먼트 갯수 : " + $(selector).length);
			$(selector).each(function(){
				resultText += $(this).text() + "\t";	// this 가 가르키는 것은 selector 이다.
			});
		};
		
		$(document).ready(function(){
			$('span[id]').addClass('spotlight');			
			$('span[id = "simpletext1"]').addClass('redtext');			
			$('span[id != "simpletext1"]').addClass('bluetext');			
			$('span[id ^= "complex"]').addClass('italictext');		/*  [id ^= "complex"] => complex로 시작하는~ 이라는 의미	 */
			$('span[id $= "text1"]').addClass('largetext');			/* [id $= "text1"] => text1으로 끝나는~ 이라는 의미 */
			$('span[id *="text"]').addClass('box');				/* [id *="text"] =>  id에 text가 들어가있는거~ 라는의미  */
			
			output("span[id]");
			output("span[id = 'simpletext1']");
			output("span[id = 'simpletext1']");
			output("span[id ^= 'complex']");
			output("span[id $= 'text1']");
			output("span[id *= 'text']"); 
			
		});
		
	</script>
	
</head>
<body>
	<span id="simpletext1">simple</span>
	<span class="simpletext2">jquery</span>
	<span id="completext1">basic</span>
	<span id="completext2">example</span>
	<span id="complex">book</span>

</body>
</html>

실행 결과

실행 결과를 보면 각각의 selector 형태를 이해 할 수 있다.

 

 

[id ^= "complex"] => complex로 시작하는~ 이라는 의미

[id $= "text1"] => text1으로 끝나는~ 이라는 의미

[id *="text"] =>  id에 text가 들어가있는거~ 라는의미 

'국비 과정 > JQuery' 카테고리의 다른 글

국비 - 1021 ( 엘리먼트 )  (0) 2022.10.23
국비 - 1019 ( jQuery )  (0) 2022.10.19