본문 바로가기
Language/JavaScript

jQuery를 이용하여 객체 제어, 선택, 요소 추가, 대체, 삭제

by javapp 자바앱 2022. 4. 10.
728x90

 

 

목차

기본문법

선택자

선택한 요소 필터링

input 요소 선택

map 사용

getter, setter

요소추가

요소복사

요소대체

요소삭제

요소탐색

요소크기

요소위치

 

 

 


 

제이쿼리 (jQuery)

자바스크립트 언어를 간편하게 사용할 수 있도록 단순화시킨 오픈 소스 기반의 자바스크립트 라이브러리입니다.

jQuery 를 이용하면 DOM를 사용하는 것 보다 훨씬 효율적으로 필요한 객체 조회할 수 있습니다.

객체를 조회할 때 CSS 선택자를 이용합니다.

 

참고 사이트

 

jquery CDN을 통해 사용

 

 


 

기본 문법

 

Document 객체의 ready() 메소드

  자바스크립트 코드는 웹 브라우저가 문서의 모든 요소를 로드한 뒤에 실행되어야 합니다.

   - 아직 생성되지 않은 HTML 요소에 속성을 추가하려고 할 경우 오류

  - 로드되지 않은 이미지 크기를 얻으려고 할 경우 오류

 

그래서 window.onload() 메소드를 이용하여 문서가 모두 로드된 뒤에 코드가 실행되도록 설정합니다.

 

 

자바스크립트

window.onload= function(){
	...
};

 

제이쿼리

$(document).ready(function(){
	//제이쿼리코드;
});

더욱 짧은 문법 (권장)

$(fucntion(){
	//제이쿼리
});

창로드

$(window).load( function() {
    $("#win").text("창이 모두 로드됐어요!");
});

 

 


 

선택자

 

태그 이름

$('li').css('color','red'); // style 변경

 

클래스 이름

$(".active").css('color','red')

 

아이디 값

$('#active').css('color','red').css('textDecoration','underline');

 

다중

<li id="active"> 
	<ul>
    	<li class="marked"> </li>
        <li class="marked"> </li>
    </ul>
</li>
$(".marked", "#active")
$("#active", ".marked")

 


 

선택한 요소 필터링

$(function() {
    $("button").on("click", function() {
        $("li:has(span)").text("<span>요소를 가지고 있는 아이템이에요!");
    });
});

<li><span>두 번째</span> 아이템이에요!</li>

 

선택자 설명
:eq(n) 선택한 요소 중 인덱스가 n인 요소
:gt(n) 인덱스가 n보다 큰 요소 모두 선택
:lt(n) 인덱스가 n보다 작은 요소 모두 선택
   
:even 인덱스가 짝수
:odd 인덱스가 홀수
:first 첫 번째 요소
:last 마지막 요소
   
:animated 애니메이션 효과 실행 중인 요소 모두
:header h1~h6
:lang(언어) 언어 요소
:not(선택자) 선택자와 일치하지 않는 요소 모두 선택
   
:root 최상위 루트 요소
:target 웹 페이지 URI의 fragment 식별자와 일치하는 요소 모두
:contains("text") 지정한 텍스트를 포함하는 요소 모두
:has("선택자") 선택자와 일치하는 자손 요소 모두
   
:empty 자식 요소를 가지고 있지 않은 요소 모두
:parent 자식 요소를 가지고 있는 요소 모두 선택

 


 

input 요소 선택

$(function() { // ready
    $("button").on("click", function() {
        // 체크되어 있는 요소를 모두 선택함.
        $(":checked").next().text("체크되어 있는 요소는 이 요소입니다.");
    });
});

<input type="checkbox" name="lecture" value="jquery" checked> <span>제이쿼리</span>

 

타입 속성 선택자 설명
:input <input> <textarea> <select> <button> 모두 선택
:button  
:checkbox  
:file  
:image  
:password  
:radio  
:reset  
:text  
:submit  
:checked  
:focus  
:disabled  
:enabled  

 

ex)

<form action="formResult_useBean.jsp"id="frm" method="get">
	<!-- name=value -->
	이름: <input type="text" name="name" id="name"><br/>
	나이: <input type="number" name="age" id="age"><br/>
	성별: <input type="radio" name="gender" value="남" id="man"> <label for="man">남자</label>
		 <input type="radio" name="gender" value="녀" id="girl"> <label for="girl">여자 </label>  <br/>
	관심분야: <input type="checkbox" name="hobby" value="운동" >운동
	   	    <input type="checkbox" name="hobby" value="게임" >게임
	 		<input type="checkbox" name="hobby" value="등산" >등산
	 		<input type="checkbox" name="hobby" value="영화" >영화<br/>
	직업: <select name="job" id ="job">
			<option value="학생">학생</option>
			<option value="직장인">직장인</option>
			<option value="기타">기타</option>
		 </select> <br/>
	<input type="button" value="jquery 클릭" id="btn" >
		 
</form>
<script>
	$(document).ready(function(){
		// # :id
		$("#btn").click(function(){ //클릭시 바로 함수 실행
			if($("#name").val()==""){
				alert("이름 입력")
				return;
			}
		
			if($("input:checkbox[name='hobby']:checked").length==0){
				alert("관심분야 선택")
				return;
			}
			$("#frm").submit();
		})
	})
</script>

$("input:checkbox[name='hobby']:checked")

<input type="checkbox" name="hobby" value="영화" >영화<br/>

 

 


 

.map()

반복을 통해 조회

var li= $('li');
li.map(function(index, elem){
	$(elem).css('color','red');
}

 

 


 

getter : .html()

setter : .html( ... )

메소드 설명
.html() 해당 요소의 HTML 콘텐츠를 반환하거나 설정함.
.text() 텍스트 콘텐츠 반환하거나 설정
.width()  
.height()  
.attr() 명시된 속성 값을 반환하거나 설정, $("img").attr("src");
.position() 첫번째 요소에 대해 특정 위치에 존재하는 객체를 반환 (getter)
.val() <form> 요소의 값을 반환하거나 설정
   
.eq(n) n번째 인덱스 값의 요소
.find("li" <li>요소를 모두 선택

 

 


 

 

요소 추가

.append()

        $("#list").append("<li>새로 추가된 아이템이에요!</li>");

'마지막'에 추가

 

.appendTo()

$("#firstItem").appendTo("#list");

#firstItem을 #list 요소의 마지막에 삽입 (추가x)

 

 

.prepend() 

요소의 앞에 추가

 

 

.prependTo()

        $("<b>새로 추가된 콘텐츠에요!</b>").prependTo(".item");

 

 

기존 요소와 같은 레벨에 추가

1. .before() 2. .after()
3. .insertBefore() 4. .insertAfter()

$("<td>새로운 셀이에요!</td>").insertBefore("#secondColumn");

$("<td>새로운 셀이에요!</td>").insertAfter("#secondColumn");

 

 

기존 요소를 감싸면서 추가

wrap

        $(".content").wrap("<div class='wrapper'></div>");

wrapAll

        $(".content").wrapAll("<div class='wrapper'></div>");

 

wrapInner

        $(".content").wrapInner("<div class='wrapper'></div>");

 

 


 

 

요소 복사 

.clone()

 

 

요소 대체

// class가 "item"인 각 요소를 id가 "firstItme"인 요소로 대체함.
$("#firstItem").replaceAll(".item");
// firstItem <- item

// class가 "item"인 모든 요소를 id가 "firstItme"인 요소로 대체함.
$(".item").replaceWith($("#firstItem"));
//item -> firstItem

 

 

요소 삭제

.remove DOM 트리에서 삭제, .first, .second 삭제 $(".content").remove(".first, .second");
.detach DOM 트리에서 삭제
.append, .prepend 메소드로 복구 가능
객체 유지
data = $(".content").detach(); //삭제
 $("#container").append(data); //복구
.empty 자식 요소 모두 삭제 $("#container").empty();
.unwrap 부모 요소 삭제, 감싼 요소 삭제 $("span").unwrap();

 

 


 

 

요소 탐색

 

조상 요소 탐색

$("p").parent() 선택한 요소의 부모(parent) 요소를 선택함.
$("p").parents("div") 선택한 요소의 조상(ancestor) 요소를 모두 선택함.
$("p").parentsUntil("div") 선택한 요소의 조상 요소 중에서 지정한 선택자에 해당하는 요소 바로 이전까지의 요소를 모두 선택함.
$("#origin").closest("div") 조상중 가장 가까운 "div"

 

 

 

형제 요소를 탐색하는 메소드

$("h4").siblings() 선택한 요소의 형제(sibling) 요소 중에서 지정한 선택자에 해당하는 요소를 모두 선택함. 같은 레벨 태그
$("h4").next() 선택한 요소의 바로 다음에 위치한 형제 요소를 선택함.
$("h4").nextAll() 선택한 요소의 다음에 위치한 형제 요소를 모두 선택함.
$("h4").nextUntil("p") 선택한 요소의 형제 요소 중에서 지정한 선택자에 해당하는 요소 바로 이전까지의 요소를 모두 선택함.
$("h4").prev() 선택한 요소의 바로 이전에 위치한 형제 요소를 선택함.
$("h4").prevAll() 선택한 요소의 이전에 위치한 형제 요소를 모두 선택함.
$("h4").prevUntil("p") 선택한 요소의 형제 요소 중에서 지정한 선택자에 해당하는 요소 바로 다음까지의 요소를 모두 선택함.

 

 

 

자손 요소를 탐색하는 메소드

$("li").children() 선택한 요소의 자식(child) 요소를 모두 선택함.
$("li").find("*") 선택한 요소의 자손(descendant) 요소 중에서 전달받은 선택자에 해당하는 요소를 모두 선택함.
별표("*")를 인수로 전달하여, 선택한 요소의 자손 요소를 모두 선택
("*") ("p") (".marked")

 

 

기타 탐색 메소드

$("li").add("p") 선택한 요소의 집합에 전달받은 요소를 추가함.
$("li").addBack("p") 선택한 요소의 집합에 바로 전에 선택했던 요소를 추가함.
$("li").each(function(){
    // <li> 마다 클래스를 추가, 제거
    $(this).toggleClass("boldFont");
});
선택한 요소 집합의 요소마다 전달받은 콜백 함수를 실행함.
$("#divBox")     // id가 "divBox"인 요소의
     .find("p")   
// 자손 요소 중에서 <p>요소를 모두 선택하고,

     .end()      
// 선택된 요소의 집합을 find() 메소드의 실행 전으로 복원함.
마지막으로 실행한 메소드의 실행 전 상태로 선택한 요소의 집합을 복원함.
.offsetParent() 선택한 요소를 위치시킬 때 기준이 되었던 조상 요소를 선택함.
$("iframe") // <iframe>요소의
.contents() // 자식 요소를 모두 선택한 후,
.find("a") // 그 중에서 <a>요소를 모두 선택하고,,
선택한 요소의 자식(child) 요소를 모두 선택함. (텍스트 노드와 주석 노드까지 모두 포함함)

 

 

 

필터링 메소드

first , last

.first()
.last()

 

eq

$("li").eq(1)

 

filter

필터 : 선택요소필터링 사용

$("li").filter(":odd")

 

not

$("li").not(":lt(2)")

 

has

선택자에 해당하는 요소를 자손 요소로 가지고 있는 요소를 모두 선택합니다.

$("li").has("span")

 

 

is

요소가 하나라도 존재하면 참을 반환

if("$("span").parents().is("ul")){
...
}

 

 

map

반복하여 반환

// 선택한 <li>요소마다 콜백함수를 실행하여 각 <li>요소의 id 값을 반환함.
var ids = $("li").map(function() {
    return this.id;
})
.get()   // 반환된 모든 id 값을 하나의 배열로 반환함.
.join(); // 배열의 모든 요소를 쉼표(,)로 구분하는 하나의 문자열로 반환함.

$("#text").html(ids);

 

 

slice(n)

인덱스가 n 이상인 요소

$("li").slice(1)

 


 

 

요소 크기

메소드설명

.width() $("#divBox").width();
$("#divBox").width("400");
.height() $("#divBox").height();
$("#divBox").height("400");
.innerWidth() $("#divBox").innerWidth()
.innerHeight() $("#divBox").innerHeight()
.outerWidth() $("#divBox").outerWidth(), $("#divBox").outerWidth(true) //마진 영역까지 포함
.outerHeight() $("#divBox").outerHeight(), $("#divBox").outerHeight(true)

 


 

요소 위치

메소드설명

.offset() 선택한 요소 집합의 첫 번째 요소의 위치를 HTML 문서를 기준으로 반환하거나, 선택한 요소의 위치를 인수로 전달받은 값으로 설정함.
.position() 선택한 요소 집합의 첫 번째 요소의 위치를 해당 요소가 웹 페이지에 위치할 때 기준이 되었던 부모 요소를 기준으로 하는 상대 위치를 반환함.
.scrollLeft() 선택한 요소 집합의 첫 번째 요소의 수평 스크롤 바의 위치를 얻거나, 선택된 요소의 수평 스크롤 바의 위치를 인수로 전달받은 값으로 설정함.
.scrollTop() 선택한 요소 집합의 첫 번째 요소의 수직 스크롤 바의 위치를 얻거나, 선택된 요소의 수직 스크롤 바의 위치를 인수로 전달받은 값으로 설정함

 

 

 

 

댓글