jQuery 익히기- 선택자, 스타일
1) window.onload
<script>
window.onload=function(){
var result = document.getElementById("result");
result.innerHTML = "on load <br>";
}
</script>

2) ready 함수
<script>
$(document).ready(function(){
$("#result").append("ready <br>");
});
</script>

//onload
<script>
window.onload=function(){
var result = document.getElementById("result");
result.innerHTML += "on load 1<br>";
}
window.onload=function(){
var result = document.getElementById("result");
result.innerHTML += "on load 2<br>";
}
window.onload=function(){
var result = document.getElementById("result");
result.innerHTML += "on load 3<br>";
}
</script>
//ready
<script>
$(document).ready(function(){
$("#result").append("ready 1<br>");
});
$(document).ready(function(){
$("#result").append("ready 2<br>");
});
$(document).ready(function(){
$("#result").append("ready 3<br>");
});
</script>
각각 실행시켜 비교해보면 다음과 같다.

<script>
$(function(){
// 전체
$("*").css("background-color", "yellow");
//태그 지정자
$("p").css("background-color", "blue");
$("div").css("background-color", "green");
})
</script>
</head>
<body>
<p>문자열1</p>
<p>문자열2</p>
<div>문자열3</div>
<div>문자열4</div>
</body>

<script>
$(function(){
//id와 class지정자
$("#test1").css("color", "blue");
$("#test2").css("color", "red");
$(".test3").css("color", "orange");
})
</script>
<body>
<p id="test1">문자열1</p>
<p class="test3">문자열2</p>
<div id="test2">문자열3</div>
<div class="test3">문자열4</div>
</body>

2-1) 선택자1, 선택자2 : 동시에 여러 태그를 선택할 때 사용
<script>
$(function(){
//$("div").css("background-color", "yellow");
//$("p").css("background-color", "yellow");
$("div, p").css("background-color", "yellow");
//$("#a1").css("color", "red");
//$("#a2").css("color", "red");
$("#a1, #a2").css("color", "red");
})
</script>
// body
<body>
<div id="a1">div 1</div>
<div>div 2</div>
<p id="a2">p 1</p>
<p>p 2</p>
</body>

2-2)
<script>
$(function(){
//$("#a1 > h1").css("background-color", "yellow");
$("#a1 h1").css("background-color", "yellow");
});
</script>
</head>
<body>
<div id="a1">
<h1>자식 태그 h1</h1>
<div>
<h1>자손 태그 h1</h1>
</div>
</div>
</body>
순서대로 1. #a1 > h1 2. #a1 h1의 결과 값

2-3) 선택자1.선택자2 : 모든 선택자를 만족하는 태그를 선택
<script>
$(function(){
$("div.a1").css("background-color", "yellow");
$("div.a2").css("background-color", "red");
$("p.a1").css("background-color", "purple");
$("p.a2").css("background-color", "blue");
});
</script>
</head>
<body>
<div class="a1">div a1</div>
<div class="a2">div a2</div>
<p class="a1">p a1</p>
<p class="a2">p a2</p>
</body>

2-4)
<script>
$(function(){
// 선택자 a1다음에 있는 p태그에 css적용
//$("#a1 + p").css("background-color", "yellow");
$("#a1 ~ p").css("background-color", "yellow");
});
</script>
</head>
<body>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<p id="a1">p 태그 a1</p>
<div>div 태그1</div>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<div>div 태그2</div>
<p>p 태그</p>
<p>p 태그</p>
<div>div 태그3</div>
<p>p 태그</p>
<p>p 태그</p>
</body>
순서대로 + , ~ 결과 값

1) 첫 번째 태그 선택
<script>
$(function(){
$("p:first").css("background-color", "yellow");
$("p:first-child").css("color", "orange");
$("p:first-of-type").css("font-size", "30px");
});
</script>
</head>
<body>
<p>p 태그</p>
<hr>
<div>
<p>div 안의 p 태그</p>
<p>div 안의 p 태그</p>
<p>div 안의 p 태그</p>
</div>
<hr>
<div>
<div>div 안의 div 태그</div>
<p>div 안의 p 태그</p>
<p>div 안의 p 태그</p>
</div>

2) 마지막 태그 선택
<script>
$(function(){
$("p:last").css("background-color", "yellow");
$("p:last-child").css("color", "orange");
$("p:last-of-type").css("font-size", "30px");
});
</script>

3) 그 외 순서 필터 선택자
• :odd : 인덱스 번호(0부터 시작)가 홀수인 태그 선택
• :even : 인덱스 번호(1부터 시작)가 짝수인 태그 선택
<script>
$(function(){
$("p:odd").css("background-color", "yellow");
$("p:even").css("background-color", "red");
});
</script>
</head>
<body>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<div>div 태그</div>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<div>div 태그</div>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
</body>

• :only-child : 영역내에서 선택자에 해당하는 태그가 하나일 경우
선택. 다른 태그가 있으면 선택되지 않음
• :only-of-type : 영역내에 선택자에 해당하는 태그가 하나일 경
우 선택
<script>
$(function(){
$("p:only-child").css("background-color", "yellow");
$("p:only-of-type").css("color", "orange");
});
</script>
</head>
<body>
<div>
<p>p 태그</p>
<p>p 태그</p>
</div>
<hr>
<div>
<p>p 태그</p>
</div>
<hr>
<div>
<p>p 태그</p>
<div>div 태그</div>
</div>
</body>

• :ep(인덱스) : 인덱스(0부터 시작)번때 해당하는 태그를 선택
• :nth-child(인덱스) : 각 영역의 인덱스(1부터 시작)번째 해당하는
태그를 선택. 인덱스번째 태그가 선택자에 해당하지 않으면 선
택되지 않음
• :nth-of-type(인덱스) : 각 영역의 인덱스(1부터 시작)번째 해당
하는 태그를 선택
<script>
$(function(){
$("p:eq(0)").css("background-color", "yellow");
$("p:nth-child(1)").css("color", "orange");
$("p:nth-of-type(1)").css("font-style", "italic");
});
</script>
</head>
<body>
<div>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
</div>
<hr>
<div>
<p>p 태그</p>
<p>p 태그</p>
<p>p 태그</p>
</div>
<hr>
<div>
<div>div 태그</div>
<p>p 태그</p>
<p>p 태그</p>
</div>
</body>

• :gt(인덱스) : 선택자에 해당하는 태그 중 인덱스(0부터 시작)번
째 태그 이후의 태그들이 선택
• :lt(인덱스) : 선택자에 해당하는 태그 중 인덱스(0부터 시작)번
째 태그 이전의 태그들이 선택
• :nth-last-child(인덱스) : 뒤에서 인덱스(1부터 시작)번째 태그가
선택. 인덱스번째 태그가 선택자와 다르면 선택되지 않음
• :nth-last-of-type(인덱스) : 뒤에서 인덱스(1부터 시작)번째 태그
가 선택
<script>
$(function(){
$("p:gt(0)").css("background-color", "yellow");
$("p:lt(7)").css("color", "blue");
$("p:nth-last-child(1)").css("font-size", "30px");
$("p:nth-last-of-type(1)").css("font-style", "italic");
});
</script>

• :not : 선택자에 해당하지 않는 태그들이 선택
<script>
$(function(){
$("p:not(.a1)").css("background-color", "yellow");
});
</script>
</head>
<body>
<p>p 태그</p>
<p class="a1">p 태그 a1 class</p>
<p class="a2">p 태그 a2 class</p>
</body>

• [속성] : 속성을 가지고 있는 태그를 선택
• [속성 = 값] : 속성의 값이 지정된 값과 일치하는 태그를 선택
• [속성 != 값] : 속성의 값이 지정된 값과 일치하지 않는 태그를
선택
<script>
$(function(){
$("p[title]").css("background-color", "yellow");
$("p[title = 'aaa1']").css("color", "orange");
$("p[title != 'aaa1']").css("color", "red");
</script>
</head>
<body>
<p>속성이 없는 p태그</p>
<p title="aaa1">title이 aaa1인 p태그</p>
<p title="aaa2">title이 aaa2인 p태그</p>
</body>

• [속성 $= 값] : 속성의 값이 지정된 값으로 끝나는 태그를 선택
• [속성 |= 값] : 속성의 값이 지정된 속성의 값과 일치하거나 지정
된 속성으로 시작하고 하이픈으로 연결된 태그를 선택
• [속성 ^= 값] : 속성의 값이 지정된 값으로 시작하는 태그를 선
택
<script>
$(function(){
$("p[title $= 'a3']").css("background-color", "blue");
$("p[title |= 'aaa3']").css("color", "green");
$("p[title ^= 'aaa3']").css("font-size", "30px");
</script>
</head>
<body>
<p title="aaa3">title이 aaa3인 p태그</p>
<p title="aaa3-test">title이 aaa3-test인 p태그</p>
<p title="aaa3test">title이 aaa3test인 p태그</p>
</body>

• [속성 ~= 값] : 속성의 값이 지정된 값을 단어로 가지고 있는 태
그를 선택
• [속성 *= 값] : 속성의 값이 지정된 값을 포함하는 태그를 선택
<script>
$(function(){
$("p[title ~= 'aa']").css("color", "purple");
$("p[title *= 'aa']").css("font-size", "30px");
});
</script>
</head>
<body>
<p title="aaa4">title이 aaa4인 p태그</p>
<p title="aaa5">title이 aaa5인 p태그</p>
<p title="aa a6">title이 aa a6인 p태그</p>
<p title="aa">title이 aa인 p태그</p>
</body>

• :header : h1 ~ h6 태그를 선택
• :focus : 현재 포커스가 주어진 태그를 선택
• :contains(‘문자열‘) : 지정된 문자열이 포함되어 있는 태그를 선
택
• :has(선택자) : 지정된 선택자를 포함하고 태그를 선택
<script>
$(function(){
$(":header").css("color", "red");
$(":focus").css("background-color", "green");
$("div:contains('Hello')").css("font-size", "30px");
$("div:has('p')").css("font-style", "italic");
});
</script>
</head>
<body>
<p>p태그</p>
<h1>h1 태그</h1>
<h3>h3 태그</h3>
<input type=text" autofocus="autofocus"/><br>
<input type=text"/><br>
<div>Hello World</div>
<div>Hello World</div>
<div>Hi World</div>
<div>
<p>p 태그를 가지고 있는 div 태그</p>
</div>
<div>
<div>p 태그를 가지고 있는 div 태그</div>
</div>
</body>

짧은 시간에 많은 양을 학습하다보니 완전 이해에는 어려움이 있었다. 실습했던 것을 다시 해보면서 이해하는 과정이 필요하고, 특정 선택자나, 인덱스를 불러오는 과정이 아직 헷갈려 다른 예제도 한 번 찾아보면 좋을 것 같다.