계층 선택자(selector)
ancestor descendant
: 조상(ancestor)엘리먼트의 자손(descendant)인 모든 descendant 엘리먼트를 선택
parent > child
: parent의 바로 아래 자식인 모든 child 엘리먼트를 선택
prev + next
: prev 엘리먼트 바로 다음의 형제인 next 엘리먼트를 선택
prev ~ sibling
: prev 엘리먼트 다음의 형제인 모든 sibling 엘리먼트를 선택
e.g.
// ancestor descendant
// form 태그 안의 input 태그 스타일 변경
$("form input").css("border", "2px solid red");
// prev > child
// 아이디가 main인 객체 아래의 모든 id 클래스 객체 스타일 변경
$("#main > .id").css("border", "3px dotted blue");
// prev + next
// label 태그 바로 아래 태그가 input인 모든 input 태그의 스타일 변경 및 value 값을 설정
$("label + input").css("color", "black").val("테스트!!!");
:
<label>Name:</label>
<input name="name" />
<label>Email:</label>
<input name="email" />
<input name="none" /> <!--변화 없음-->
// prev ~ sibling
// 아이디가 prev 인 객체의 형제인 모든 div 태그의 스타일 변경
$("#prev ~ div").css("border", "2px groove blue");
:
<div>div 1</div> <!--변화 없음-->
<div id="prev">div 2</div> <!--변화 없음-->
<div>div 3</div>
<div>div 4<div id="small">div 4-1</div></div> <!-- 4-1은 변화 없음-->
<span>span</span> <!--변화 없음-->
<div>div 5</div>
기본 필터 선택자(selector)
:first
: 페이지 처음 선택된 엘리먼트 선택
:last
: 페이지 마지막 선택된 엘리먼트 선택
:not(selector)
: 주어진 선택자와 반대의 모든 엘리먼트 선택
:even
: 페이지의 짝수 번째 엘리먼트 선택(인덱스는 0부터 시작)
:odd
: 페이지의 홀수 번째 엘리먼트 선택(인덱스는 0부터 시작)
:eq(index)
: 지정된 index 번째 엘리먼트 선택
:gt(index)
: 지정된 index 번째의 엘리먼트(포함되지 않음) 이후의 엘리먼트 선택
:lt(index)
: 지정된 index 번째의 엘리먼트(포함되지 않음) 이전의 엘리먼트 선택
:header
: 헤더(<h1> ~ <h6>) 엘리먼트 선택
:animated
: 현재 애니메이션이 적용되고 있는 엘리먼트 선택
e.g.
// 첫 번째 tr 태그 스타일 변경
$("tr:first").css("font-style", "italic");
// 마지막 tr 태그 스타일 변경
$("tr:last").css({"backgroundColor": "yellow", "fontWeight": "bolder"});
// checkbox 객체가 선택되지 않은 형제 태그인 span 태그의 스타일 변경
$("input:not(:checked) + span").css("background-color", "yellow");
:
홍길동
이순신
// 짝수행의 스타일 변경(인덱스는 0부터 시작)
$("tr:even").css("background-color", "#bbbbff");
// 홀수행의 스타일 변경(인덱스는 0부터 시작)
$("tr:odd").css("background-color", "#bbbbff");
// 2번째 인덱스의 td 태그의 스타일 변경(인덱스는 0부터 시작) - 하나의 td만 변경
$("td:eq(2)").css("text-decoration", "blink");
// 인덱스가 3보다 큰 td 태그 스타일 변경
$("td:gt(3)").css("text-decoration", "line-through");
// 인덱스가 4보다 작은 td 태그 스타일 변경
$("td:lt(4)").css("color", "red");
// h1, h2, h3 과 같은 헤더 태그 스타일 변경
$(":header").css({background:'#ccc', color:'blue'});
// 애니메이션이 동작하고 있는 것만 스타일 변경
:
$(document).ready(function(){
$("#run").click(function(){
$("div:animated").toggleClass("colored");
});
function animateIt(){
$("#mover").slideToggle("slow", animateIt);
}
animateIt();
});
Run
내용 필터 선택자(selector)
:contains(text)
지정된 text 내용을 포함하는 엘리먼트 선택
:empty
자식을 가지지 않은 엘리먼트 선택
:has(selector)
지정된 selector와 일치되는 엘리먼트를 포함하는 엘리먼트 선택
:parent
빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트 선택
e.g.
// b 태그 안의 text에 j가 포함된 text의 스타일 변경
$("b:contains('j')").css("background", "yellow");
// 내용이 없는 td 태그에 text를 추가하고 스타일 변경
$("td:empty").text("테스트!").css('background', 'rgb(255, 220, 200)');
// div 태그 안의 p 태그에 class 속성에 test 클래스 설정
$("div:has(p)").addClass("test");
// td 태그에 값이 존재하는 경우 애니메이션효과 부여
// (주어진 것이 부모인 것을 모두 받아온다. 비어있는 것은 포함 안함)
$("td:parent").fadeTo(1500, 0.3);
가시 필터 선택자(selector)
:hidden
감춰진(hidden) 엘리먼트 선택
:visible
보이는(visible) 엘리먼트 선택
상태 확인하는 방법
var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');
css 속성이 #myDiv{display: none;} 이러면 isVisible은 false, isHidden은 true
e.g.
// hidden 속성인 div 태그를 보이게 함
$("div:hidden").show(3000);
:
<div style="display:none; width:70px; height:40px; background:#ee77ff; margin:5px; float:left;">
테스트~
</div>
// 보이는 div 태그를 클릭 할 경우 스타일 변경
$("div:visible").click(function(){
$(this).css("background", "yellow");
});
// hidden 속성인 경우 보이게 함
if($('#myDiv').is(':hidden'))
$('#myDiv').show();
속성 필터 선택자(selector)
[attribute]
지정된 속성(attribute)를 가지는 엘리먼트 선택
[attribute = value]
지정된 속성(attribute)과 값(value)을 가지는 엘리먼트 선택
[attribute != value]
지정된 속성과 같지 않거나 지정된 속성값을 가지지 않는 엘리먼트 선택
[attribute ^= value]
지정한 값으로 시작하는 속성을 가진 엘리먼트 선택
[attribute $= value]
지정한 값으로 끝나는 속성을 가진 엘리먼트 선택
[attribute *= value]
지정한 값을 포함하는 속성을 가진 모든 엘리먼트 선택
[attributeFilter1][attributeFilter2][attributeFilterN]
지정한 속성 필터 선택자와 일치하는 모든 엘리먼트 선택
e.g.
// 버튼의 style 변경
$("input[type='button']").css("background", "yellow");
:
<input type="button" value="클릭" />
// input 객체의 name 속성이 test 인 모든 input 객체 다음 객체의 text 를 변경
$("input[name='test']").next().text("테스트~");
:
<input type="radio" name="test" value="1">
<span>name?</span>
<input type="radio" name="test" value="2">
<span>name?</span>
<input type="checkbox" name="ch" value="3">
<span>name?</span> <!-- 변화 없음 -->
// input 객체의 name 속성이 test가 아닌 모든 input 객체 다음 객체의 text를 변경
$("input[name!='test']").next().text("안녕!");
:
<input type="radio" name="test" value="1">
<span>name?</span> <!-- 변화 없음 -->
<input type="radio" name="test" value="2">
<span>name?</span> <!-- 변화 없음 -->
<input type="checkbox" name="ch" value="3">
<span>name?</span>
// input 객체의 name속성이 news로 시작하는 객체의 value 속성 값 설정
$("input[name^='news']").val("abc !");
// input 객체의 name 속성이 letter 로 끝나는 객체의 value 속성 값 설정
$("input[name$='letter']").val("a letter");
// input 객체의 name 속성이 man을 포함하는 모든 객체의 value 속성 값 설정
$("input[name*='man']").val("man !!!");
자식 필터 선택자(selector)
:nth-child(index/even/odd/equation)
N/짝수/홀수/수식에 따른 번째 자식 엘리먼트 선택
:first-child
첫 번째 자식 엘리먼트 선택
:last-child
마지막 자식 엘리먼트 선택
:only-child
형제가 없는 자식 엘리먼트 선택
// tr의 2번째 자식의 td태그 스타일 변경(인덱스는 1부터 시작) - 3번째 자식 열 전체
$("td:nth-child(3)").css("text-decoration", "blink");
폼 선택자(selector)
:input
모든 input, textarea, select, button 요소 선택
:text
text 타입의 모든 input 요소 선택
:password
password 타입의 모든 input 요소 선택
:radio
radio 타입의 모든 input 요소 선택
:checkbox
checkbox 타입의 모든 input 요소 선택
:submit
submit 타입의 모든 input 요소 선택
:image
image 타입의 모든 input 요소 선택
:reset
reset 타입의 모든 input 요소 선택
:button
모든 button 요소들 및 button 타입의 input 요소 선택
:file
file 타입의 모든 input 요소 선택
:hidden
hidden 상태인 모든 요소 선택
e.g.
// text 타입의 모든 input 요소의 스타일 변경
$('input:text').css('border', '1px solid blue');
// checked 속성과 selected 속성을 가진 항목 스타일 변경
$(":checked,:selected").css("border", "2px solid red");
폼 필터 선택자(selector)
:enabled
현재 enable 상태인 모든 요소 선택
:disabled
현재 disable 상태인 모든 요소 선택
:checked
체크 상태인 모든 요소 선택
:selected
선택된 모든 요소 선택
'JavaScript > jQuery' 카테고리의 다른 글
[ jQuery ] Manipulation(조작) (0) | 2022.07.13 |
---|---|
[ jQuery ] Attributes (속성) (0) | 2022.07.13 |