카테고리 없음

selector

logloglog 2020. 12. 16. 13:32

앞으로 남은 진도

선택자필터
json
ajax 서버랑연동
부트스트랩 이용해서 html디자인하는거

 

:first 대신 .first()

:last 대신 .last()

:eq() 대신 .eq()

:gt() :lt()도 .slice()로.... 전버전은 권하지않는다.

 

nth-child(n)이용하기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../../js/jquery-3.5.1.js"></script> 
	<script type="text/javascript">
		$(document).ready(function(){
			$("table").css({"width":"300px", "text-align":"center"});
			$("th").css("background-color","grey");
			$("td:nth-child(3n)").css("background-color","skyblue");
			$("td:nth-child(3n+1)").css("background-color","yellow");
			$("td:nth-child(3n-1)").css("background-color","red");
		});
</script>
</head>
<body>
	<table>
		<tr>
			<th>이름</th>
			<th>주소</th>
			<th>전화번호</th>
		</tr>
		<tr>
			<td>홍길동</td>
			<td>대전</td>
			<td>010-222-333</td>
		</tr>
		<tr>
			<td>진달래</td>
			<td>서울</td>
			<td>010-444-555</td>
		</tr>
		<tr>
			<td>개나리</td>
			<td>부산</td>
			<td>010-666-111</td>
		</tr>
		<tr>
			<td>무궁화</td>
			<td>대구</td>
			<td>010-288-999</td>
		</tr>
	
	</table>
</body>
</html>

th대신 맨윗줄도 td을 쓴다면

$("tr:nth-child(1)>td").css({"background-color":"grey"});

tr의 >를 쓰면 된다

 

선택자에 대한건 

www.w3schools.com/jquery/jquery_ref_selectors.asp

 

jQuery Selectors

jQuery Selectors jQuery Selectors Use our jQuery Selector Tester to demonstrate the different selectors. Selector Example Selects * $("*") All elements #id $("#lastname") The element with id="lastname" .class $(".intro") All elements with class="intro" .cl

www.w3schools.com

 

여기 자세히나와있다

table 위에! tr, 그 위에 td라 td에 색 들어가잇으면 tr에 색입혀도 안보이는거임

$("tr td").slice(0,2)

로 해도 됨

 


내용으로 필터하는 방법

 

contains(text)  text를 포함하고 있는걸 찾는것

p:contains(jQuery)

body *:contains()

 

has(selector) 는 셀렉터를 가지고잇는 요소반환

div:has(p, span) 은 p, span을 가지고잇는 요소

 

empty : 자식요소도, 텍스트도 없는 모든요소 반환

p:empty  자식도, 텍스트도 안들어있는 p태그 찾는것

parent 자식요소 또는 텍스트를 갖고있는 모든 요소 반환. 부모로서 역할하고잇는 태그찾는거

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	div{
		width: 500px;
		height: 30px;
		border : 3px solid yellowgreen;
	}
</style>
<script src="../../js/jquery-3.5.1.js"></script> 
	<script type="text/javascript">
		$(document).ready(function(){
			$("span:contains(jQuery)").css("border","2px solid blue");
			$("span:not(:contains(jQuery))").css("border","2px solid red");
			$("div:has(span)").css("border","5px solid green");
			$("div:empty").css("border","2px solid orange");
			$("div span").css({"color":"red","font-weight":"bold"});
			$("div:parent").css({"font-size":"1.5em","font-weight":"bold"});
			
			
		});
</script>
</head>
<body>
	<div></div><br>
	<div>헬로우~~~
		<span>오늘도 즐겁게 열심히 ^ㅇ^</span>
	</div><br>
	<p>HELLO JQUERY
		<span>Thanks, jQuery!</span>
	</p><br>
	<div>jQuery!</div><br>
	<span>쉬운 jQuery!~~~~</span><br>
	<div></div><br>
	<hr color="blue"><br>
</body>
</html>

 

 

만약 저 덩어리가 div에 묶여있었다면 (id가 #ex3)

$("#ex3 span:어쩌구 라거나

$("span어쩌구","#ex3")라고 줘도 됨

$("span:not(:contains(jQuery))").css("border","2px solid red");

 


가시성상태필터 히든과 비지블 두개임

 

:hidden

숨겨진 요소를 선택 (대상: 숨겨진 요소의 유형

1. display:none

2. input type="hidden"

3. width와 height가 0으로 설정됨

4. 부모요소가 hidden

인것들을 찾아줌

**visiblity:hidden은 찾지못한다.

ex)  $("p:hidden").show("5000") 숨겨진 피태그를 5초간 보여줌

 

:visible

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../../js/jquery-3.5.1.js"></script> 
	<script type="text/javascript">
		$(document).ready(function(){
		});
		
		function showMsgHidden(idx, item){ //index가 필요할때 이렇게 쓰면 됨. item. 은 this. 랑 똑같은거임
			var msg;
			$(":hidden","form").each(function(){
// 				msg += $(this).attr("localName"); //안나옴
// 				msg += $(this).prop("localName"); //이건 나옴
				msg += $(this).prop("tagName")+ "/" 
				+ $(this).attr("name")+ "/"
				+ $(this).text()+ "/"
				+ $(this).attr("value")+ "\n"; //이건 나옴
// 				msg += this.localName + "\n";
			});
			alert(msg);
		}
		
		function showMsgVisible(){
			var msg;
			$("form :visible").each(function(){
				msg += $(this).prop("tagName")+ "/" 
				+ $(this).attr("name")+ "/"
				+ $(this).text()+ "/"
				+ $(this).attr("value")+ "\n";
			});
			alert(msg);
		}
</script>
</head>
<body>
	<form>
		ID : <input type="text" name="userID"><br>
		<span style="display: none;" name="idDouble">중복된 아이디입니다.</span>
		이름 : <input type="text" name="userName"><br>
		성별 :<label for="male"> 남자</label><input type="radio" name="userGender" id="male"> 
			<label for="female">여자</label> <input type="radio" name="userGender" id="female"><br>
			<input type="hidden" id="userAge" name="userAge"> 
			<input type="hidden" id="userCity" name="userCity"> 
			<button type="button" onclick="showMsgHidden()">hidden요소</button>
			<button type="button" onclick="showMsgVisible()">visible요소</button>
	</form>
</body>
</html>

 

 


form 상태 필터

 

:enabled 현재 사용가능한 요소와 일치 현재활성화되어있는애들

:disabled 비활되어있는애들

:selected : select option에서 사용되는거고 체크박스나 라디오버튼에서는 사용되지않고

이둘은  :checked를 쓴다.

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../../js/jquery-3.5.1.js"></script> 
	<script type="text/javascript">
	$(document).ready(function(){
		$(":enabled").css("border", "3px solid salmon");
		$(":disabled").css("border", "3px solid forestgreen");
	});
		
		
</script>
</head>
<body>
<form>
	<input type="text"><br>
	<input type="password"><br>
	<select name="disSelect" disabled="disabled">
		<option>Option1</option>
		<option>Option2</option>
		<option>Option3</option>
	</select><br>
	<textarea rows="10" cols="20">text</textarea><br>
	<input type="button" value="확인" disabled="disabled"><br>
</form>
</body>
</html>

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../../js/jquery-3.5.1.js"></script> 
	<script type="text/javascript">
		$(document).ready(function(){
			$("button").click(function(){
				var str = "";
				
				$("[name=like]:checked").each(function(){
					console.log(str);
					str += $(this).next().text()+",";
				});
				var lastChar = str.slice(-1);
				if(lastChar==","){
					str = str.slice(0,-1);
				}
				alert("당신의 취미는 " + str + "입니다.");
				$("span").html(str);
			});
		});
		
</script>
</head>
<body>
<form>
	취 미 : <input type="checkbox" name="like"  id="trip"> <label for="trip">여행</label>
	<input type="checkbox" name="like"  id="jang"> <label for="jang">장기</label>
	<input type="checkbox" name="like"  id="ba"> <label for="ba">바둑</label>
	<input type="checkbox" name="like"  id="book"> <label for="book">독서</label>
	<input type="checkbox" name="like"  id="nak"> <label for="nak">낚시</label>
	<input type="checkbox" name="like"  id="bord"> <label for="bord">보드</label><br><br>
	<button type="button">전송</button><br><br>
	선택결과 : <span></span>
</form>
</body>
</html>

 

 

여기서 주목할점은

 

value에 값을 똑같이 주지않아도

str += $(this).next().text()+",";

next() 를 써주면 다음 요소를 선택하게 되므로 가져올수있음

 

그리고 마지막 콤마 ,을 없애는 방법은

var lastChar = str.slice(-1);
				if(lastChar==","){
					str = str.slice(0,-1);
				}

이렇게

 

아니면 인덱스를 사용하면 되는데

	for(var i = 0; i<3; i++){
					if(i > 0){//두번째부터 들어감
						tmp += ", ";
					}
					tmp+= arr[i].value; //이런식으로 넣었다치면
				}

이런식으로

아니면

$("[name=like]:checked").each(function( index ){ 이부분에 index 넣어서 이용할수도있음