개발자 미니민의 개발스터디

[jQuery] jQuery 정의 셀렉터 요소 접근

by mini_min

JSP

[jQuery] jQuery 정의 셀렉터 요소 접근

✔️ jQuery 사용하기

- jQuery( elements ) Returns : jQuery

- jQuery(원소), jQuery(원소.원소.원소) : 실행후 jQuery객체를 반환 하나 또는 다단계의 문서 원소로서 사용할수 있다.

- $()은 $(document).ready() 의 짧은 표현으로 사용가능하다.

- $(document).ready() 은 문서가 사용가능한 시점을 자동으로 인식하여 주어진 콜백 함수를 동작시킨다.

- 콜백함수란 지정된 행위가 끝난다음 자동적으로 실행될 함수를 의미한다.

 

 

✔️ jQuery 셀렉터

* : 모든 요소와 일치
태그 : 지정된 태그와 일치
#아이디 : 요소의 id 속성값과 일치
.클래스명 : 요소의 class 속성값과 일치
selector1, selector2 : 선택자 목록(,)은 일치하는 모든 요소를 선택(OR 연산)
selector1selector2 : 모든 조건을 만족하는 요소. 선택자끼리 띄어쓰기 없이 붙여 쓴다.(AND 연산)

E1 E2  : E1 요소의 자식인 모든 E2 요소와 일치. 자손(후손) 결합자
E1 > E2 : E1 요소 바로 아래 자식인 E2 요소와 일치. 자식 결합자(>)
E1 + E2 : E1 요소의 바로 다음에 나오는 형제요소 E2와 일치. 인접 형제 결합자(+)
E1 ~ E2 : E1 요소의 다음에 나오는 모든 형제 E2와 일치. 일반 형제 결합자(~) 

E1[attr] : attr 어트리뷰트를 갖는 E1 요소와 일치 
E1[attr=val] : attr 어트리뷰트의 값이 val을 갖는 E1 요소와 일치 
E1[attr^=val] : attr 어트리뷰트의 값이 val 값으로 시작하는 E1 요소와 일치 
E1[attr$=val] : attr 어트리뷰트의 값이 val 값으로 끝나는 E1 요소와 일치 
E1[attr*=val] : attr 어트리뷰트의 값이 val 값을 포함하는 E1 요소와 일치 

 

📓 예제 1

$(function(){
//모든 요소
$("*").css({color:'#333', 'font-size':'20px'});
//태그 선택자
$("p").css("border", "1px solid red");
//아이디 선택자
$("#layout1").css({width:'300px', padding:'10px', border:'2px solid green'});
//클래스 선택자
$(".red").css("color", "red");
//AND
$("label.underline").css("text-decoration", "underline");
//바로 아래 자식 하나
$("div > label").css("color", "tomato");
//모든 자손
$("div label").css("background", "yellow");
//인접 형제. 바로 다음 형제 하나
$("label + span").css("border", "1px dashed red");
//다음에 오는 모든 형제
$("label ~+ span").attr("title", "과목");
});

 

📓 예제 2

<script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
//span 태그 글자색 토마토
$("span").css("color", "tomato");
//span 과 label 태그 밑줄(or)
$("span, label").css("text-decoration", "underline");
//div1 아이디 글자색 blue
$("#div1").css("color", "blue");
//div2 아이디 글자 진하게
$("#div2").css("font-weight", "800");
//c1 클래스 배경색 yellow
$(".c1").css("background", "yellow")
//속성
//input 요소 중 name = subject 인 요소
$("input[name=subject]").css("background", "#eee");
//form 의 input 요소중 name 속성을 가진 요소 보더 없애기
$("form input[name]").css("border", "none");
$("form input[type=text], form input[type=password]").css("border-bottom", "1px solid blue");
//form의 input 요소 중 name 속성이 a로 시작하는 요소
$("form input[name^=a]").css("border-right", "3px solid red");
//form의 input 요소 중 title 속성이 버튼으로 끝나는 요소
$("form input[title$='버튼']").css("background", "green");
//form의 input 요소 중 name 속성이 x를 포함하는 요소
$("form input[name*=x]").css("border-left", "3px solid black");
//form의 input 요소 중 title 속성에 내용이라는 단어가 들어간 요소
$("form input[title~='내용']").css("background", "yellow");
});
</script>

 

📓 예제 3 - 이벤트 처리

button 제외 (: button)

<script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
//form 안의 input 형제 요소 숨기기
$("form input+span").hide();
$("form input[type=text]").css("border", "1px solid #aaa");
//focus 이벤트 처리. button 제외
$("form input").not($(":button")).focus(function(){
$(this).css("border", "1px solid #f28011");
$(this).next("span").show();
});
//blur 이벤트 처리
$("form input").not($(":button")).blur(function(){
$(this).css("border", "1px solid #aaa");
$(this).next("span").hide();
});
});
</script>

 

 

✔️ jQuery 필터

:eq(n) : 선택한 요소 중에서 인덱스가 n인 요소를 선택. $("ul li:eq(3)")
:gt(n) : 선택한 요소 중에서 인덱스가 n보다 큰 요소를 모두 선택. $("ul li:gt(3)")
:lt(n) : 선택한 요소 중에서 인덱스가 n보다 작은 요소를 모두 선택. $("ul li:lt(3)")
:even : 선택한 요소 중에서 인덱스가 짝수인 요소를 모두 선택. $("tr:even")
:odd : 선택한 요소 중에서 인덱스가 홀수인 요소를 모두 선택. $("tr:odd")
:first : 선택한 요소 중에서 첫 번째 요소를 선택. $("p:first")
:last : 선택한 요소 중에서 마지막 요소를 선택. $("p:last")
:animated : 선택한 요소 중에서 애니메이션 효과가 실행 중인 요소를 모두 선택. $(":animated")
:header : 선택한 요소 중에서 <h1>부터 <h6>까지의 요소를 모두 선택. $(":header")
:lang(언어) : 선택한 요소 중에서 지정한 언어의 요소를 모두 선택. $("p:lang(ko)")
:not(선택자) : 선택한 요소 중에서 지정한 선택자와 일치하지 않는 요소를 모두 선택. $("input:not(:empty)")
:root : 선택한 요소 중에서 최상위 루트 요소를 선택. $(":root")
target : 선택한 요소 중에서 웹 페이지 URI의 fragment 식별자와 일치하는 요소를 모두 선택. $("a[target='_blank']")
:contains(텍스트) : 선택한 요소 중에서 지정한 텍스트를 포함하는 요소를 모두 선택. $(":contains('Hello')")
:has(선택자) : 선택한 요소 중에서 지정한 선택자와 일치하는 자손 요소를 갖는 요소를 모두 선택. $("p:has(span)")
:empty : 선택한 요소 중에서 자식 요소를 가지고 있지 않은 요소를 모두 선택. $(":empty")
:parent : 선택한 요소 중에서 자식 요소를 가지고 있는 요소를 모두 선택. $(":parent")

-- 자식 필터
:first-child : 셀렉터에 해당하는 모든 요소 중 첫번째 자식인 요소를 선택.
:last-child : 셀렉터에 해당하는 모든 요소 중 마지막 자식인 요소를 선택.
:nth-child(n) : 셀렉터에 해당하는 모든 요소 중 앞에서 n번째 자식인 요소를 선택. n은 0부터 대입하고, 요소의 index는 1부터 시작
:nth-child(even/odd) : even, odd에 해당하는 자식들과 일치.
:nth-last-child(n) : 셀렉터에 해당하는 모든 요소 중 뒤에서 n번째 자식인 요소를 선택.
:only-child : 자신이 부모 요소의 유일한 자식인 모든 요소와 일치. 

 

📓 예제 1

$(function(){
//첫번째 tr
$("tr:first").css("border", "2px solid darkblue");
//$("tr:eq(0)").css("border", "darkblue");
//홀수 tr
$("tr:odd").css("background", "#efefef");
//마지막 tr
$("tr:last").css("border-bottom", "2px solid #777");
//전체 td 중 첫번째 td 하나
//$("td:first").css("background", "yellow");
//tr의 첫번째 td 하나
//$("td:first-child").css("background", "yellow");
//n번째 자식요소(요소의 처음이 1)
//n은 0부터 대입, 1, 3, 5
$("td:nth-child(2n+1)").css("background", "yellow");
});

 

📓 예제 2

$(function(){ //td:contains : 내용 찾기!!
$("table.tc td:empty").css("background", "yellow");
$(".tc td:contains('오라클')").css("color", "red");
$(".tc td:contains('스프링')").parent().css("background", "pink"); //tr
$("table.tc tr:eq(1)").css("background", "tomato");
$("table.tc tr:gt(5)").css("background", "#eee");
$("table.tc td").each(function(idx){
if(idx !==0 && idx %6===0){
$(this).css("background", "lightblue")
}
})
});

 

 

✔️ jQuery 선택된 요소 접근

-- 선택된 요소 접근 
  .html() : 해당 요소의 HTML 콘텐츠를 반환하거나 설정한다.
  .text() : 해당 요소의 텍스트 콘텐츠를 반환하거나 설정한다.
  .val() : <form>요소의 값을 반환하거나 설정한다
  .attr() : 해당 요소의 명시된 속성의 속성값을 반환하거나 설정한다.
  .width() : 선택한 요소 중에서 첫 번째 요소의 너비를 픽셀 단위의 정수로 반환하거나 설정한다.
  .height() : 선택한 요소 중에서 첫 번째 요소의 높이를 픽셀 단위의 정수로 반환하거나 설정한다.
  .position() : 선택한 요소 중에서 첫 번째 요소에 대해 특정 위치에 존재하는 객체를 반환한다.(getter 메소드)

-- 메소드 체이닝(method chaining)
  여러 개의 메소드가 연속으로 호출되는 것
  예 : $("ul").find("li").eq(1).append("자바");

 

📓 예제 1

$(function(){
$(".btnOk").click(function(){
//text - 텍스트 형태, html - html형태
let name = $(".std").text;
//속성이름을 data-num 이라고 주면, 해당 값을 가져올 수 있다.
let num = $(".std").attr("data-num");
//form 하위 요소(input 등)에 value 값 설정
$("#score").val(90);
//form 하위 요소(input 등)의 value 값 반환
let subject = $("#subject").val();
let score = $("#score").val();
let s = "<p>학번:"+num+"</p>";
s += "<p>이름:"+name+"</p>";
s += "<p>과목:"+subject+"</p>";
s += "<p>점수:"+score+"</p>";
$("#layout").html(s); //html 콘텐츠 설정
//$("#layout").text(s); //텍스트 설정! html 태그도 텍스트로 처리한다.
});
});

 

 

✔️ jQuery 애니메이션

-- 선택

$(function(){
function move(){
$(".box").animate({width: "50%"}, "slow");
$(".box").animate({width: "100%"}, "slow", move);
}
move();
$(".btn").click(function(){
//: = 모든 것
$(":animated").css("background-color", "red");
});
});

 

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기