728x90
목차
jQuery 기본
jQuery 문법
- 제이쿼리를 사용하면 간편하게 HTML요소를 선택하고
- 선택된 요소에 손쉽게 특 동작을 설정 가능
$(CSS선택자).동작함수이름();
-
$
- 제이쿼리를 의미, 제이쿼리에 접근할 수 있게 해주는 식별자
- 선택자를 이용하여 HTML 요소를 선택하고, 동작 함수를 정의하여 선택된 요소에 원하는 동작을 설정
$() 함수
-
$()
- 선택된 HTML 요소를 제이쿼리에서 이용 가능한 형태로 생성해 주는 역할
- 인수(parms) : HTML 태그 이름 or CSS 선택자를 전달하여 특정 HTML 요소를 선택 가능
- $() 함수를 통해 생성된 요소를 제이쿼리 객체라고 표현
Document 객체의 ready() 메소드
보통 자바스크립트코드는 웹 브라우저가 문서의 모든 요소를 로드한 뒤에 실행되어야 한다. 그래서 다음과 같은 경우 오류가 발생한다
- 아직 생성되지 않은 HTML 요소에 속성을 추가할 경우
- 아직 로드되지 않은 이미지의 크기를 얻으려고 할 경우
아직 생성되지 않은 HTML 요소에 속성을 추가하는 예제
const func = function () {
addAttribute(); // 아이디가 "para"인 HTML 요소에 속성 추가
createElement(); // 아이디가 "para"인 HTML 요소를 생성
}
const createElement = function() {
const criteriaNode = docuemnt.getElemntById("text"); // id가 text인 element를 얻어온다.
const newNode = document.createElemnt("p"); // p element를 생성
newNode.innerHTML = "새로운 단락"; // p element 내부에 "새로운 단락" 추가
newNode.setAttribute("id", "para");
document.body.insertBefore(newNode, criteriaNode); // id가 text인 element이전에 newNode 추가
}
const addAttribute() {
document.getElementById("para").setAttribute("style", "color:red");
}
- "para"라는 element가 생성되기 전
- addAttribute()를 통해 아직 정의되지 않은 "undefined" 를 참조
- undefined에는 setAttribute()라는 메소드가 없으므로 해당 코드는 에러를 발생시킨다.
그래서 자바스크립트에서는 window 객체의 onload() 메소드를 이용하여 문서가 모두 로드된 뒤에 코드가 실행되도록 설정한다.
window.onload = function() {
// 코드
}
// 마찬가지로 제이쿼리에서는 Docuemnt 객체의 ready() 메소드를 이용하여 같은 결과를 보장한다.
$(document).ready(function() {
// 제이쿼리 코드
});
// jQuery Team에서는 같은 결과를 보장하는 더욱 짧은 문법을 제공
$(function() {
// 제이쿼리 코드
});
// 다음은 문서가 모두 로드되는 시점과 창이 모두 로드되는 시점의 차이를 보여주는 예제
$(document).ready(function() {
$("#doc").text("문서가 전부 로드");
}));
$(window).load(function() {
$("#win").text("창이 모두 로드");
});
// 문서기 모두 로드된 이후, 창의 로드가 완료 된다.
CSS 선택자를 이용한 선택
제이쿼리에서는 CSS 선택자를 이용하여 HTML 요소 선택이 가능하다.
- 태그 이름을 사용하여 같은 태그 이름을 가지는 HTML 요소를 모두 선택 가능
- getElementsByTagName() 메소드와 같은 동작을 수행
$(function(){
$("p").on("click", function() { // <p> 요소를 모두 선택
$("span").css("fontSize", "28px"); // <span> 요소를 모두 선택
});
});
// $() 함수에 전달되는 인수는 반드시 따옴표(")를 사용한 문자열 형태로 전달되어야 한다.
// id를 사용하여 특정 HTML 요소 선택 가능
$(function() {
$("p").on("click", function() {
$("#jq").css("border", "2px bolid orange"); /// id가 "jq"인 요소를 선택
});
});
// 클래스를 선택하여 같은 클래스에 속하는 HTML 요소를 모두 선택 가능
// getElementsByClassName() 메소드와 같은 동작을 수행
$(function() {
$("p").on("click", function() {
$(".jq").css("backGroundColor", "lightGray"); // 클래스가 "jq"인 요소를 모두 선택
});
});
// 속성을 사용하여 속성이 조건에 맞는 HTML 요소를 선택 가능
$(function() {
$("p").on("click", function() {
$("img[alt='flower']"].attr("src", "/example/images/img_monalisa.png");
});
});
jQuery 선택자
- 제이쿼리에서는 CSS 선택자뿐만 아니라 몇몇 비표준 선택자까지도 사용 가능
- 이러한 비표준 선택자를 사용하면 선택한 요소를 저장하거나, 그 결과에 대해 필터링 가능
선택한 요소의 저장
제이쿼리에서는 선택한 요소들을 변수에 저장하여 사용 가능
문서내의 모든 <li> 요소를 선택하여 변수에 저장한 후, 해당 변수를 사용하는 예제
$(function() {
let items = $("li"); // <li> 요소를 모두 선택하여 변수 items에 저장.
$("button").on("click", function() {
$("len").text("저장된 <li> 요소의 총 개수는 " + itesm.length + "개 입니다");
});
});
// - 이렇게 저장된 요소들은 변수에 저장될 당시의 요소들만 저장
// - 요소가 저장된 이후에 문서에 추가되거나 삭제된 요소들을 자동으로 갱신하지는 않는다.
선택한 요소의 필터링
제이쿼리에서는 선택한 요소 중 더욱 세분화된 선택을 하기 위한 필터링 진행 가능
문서 내의 모든 <li> 요소 중에서 <span> 요소를 가지고 있는 요소를 선택하는 예제
$(function() {
$("button").on("click", function() {
$("li:has(sapn)").text("<span>요소를 가지고 있는 아이템");
});
});
필터링에 사용할 수 있는 선택자
선택자 | 설명 |
---|---|
:eq(n) | 선택한 요소 중에서 인덱스가 n인 요소를 선택 |
:gt(n) | 선택한 요소 중에서 인덱스가 n보다 큰 요소를 모두 선택 |
:lt(n) | 선택한 요소 중에서 인덱스가 n보다 작은 요소를 모두 선택 |
:even | 선택한 요소 중에서 인덱스가 짝수인 요소를 모두 선택 |
:odd | 선택한 요소 중에서 인덱스가 홀수인 요소를 모두 선택 |
:first | 선택한 요소 중에서 첫 번째 요소를 선택 |
:last | 선택한 요소 중에서 마지막 요소를 선택 |
:animated | 선택한 요소 중에서 애니메이션 효과가 실행 중인 요소를 모두 선택 |
:header | 선택한 요소 중에서 h1부터 h6까지의 요소를 모두 선택 |
:lang(언어) | 선택한 요소 중에서 지정한 언어의 요소를 모두 선택 |
:not(선택자) | 선택한 요소 중에서 지정한 선택자와 일치하지 않는 요소를 모두 선택 |
:root | 선택한 요소 중에서 최상위 루트 요소를 선택 |
:target | 선택한 요소 중에서 웹 페이지 URI의 fragemnt 식별자와 일치하는 요소를 모두 선택 |
:contains(text) | 선택한 요소 중에서 지정한 텍스트를 포함하는 요소를 모두 선택 |
:has(선택자) | 선택한 요소 중에서 지정한 선택자와 일치하는 자손 요소를 갖는 요소를 모두 선택 |
:empty | 선택한 요소 중에서 자식 요소를 가지고 있지 않은 요소를 모두 선택 |
:parent | 선택한 요소 중에서 자식 요소를 가지고 있는 요소를 모두 선택 |
input 요소의 선택
제이쿼리에서는 입력 양식에 관련된 특정 요소를 쉽게 선택 가능
$(function() {
$("button").on("click", function() {
// 체크되어 있는 요소를 모두 선택함.
$(":checked").next().text("체크되어 있는 요소는 이 요소입니다.");
});
});
특정 input 요소를 선택할 수 있는 선택자
선택자 | 설명 |
---|---|
:button | type 속성값이 "button"인 요소를 모두 선택 |
:checkbox | type 속성값이 "checkbox"인 요소를 모두 선택 |
:file | type 속성값이 "file"인 요소를 모두 선택 |
:image | type 속성값이 "image"인 요소를 모두 선택 |
:password | type 속성값이 "password"인 요소를 모두 선택 |
:radio | type 속성값이 "radio"인 요소를 모두 선택 |
:reset | type 속성값이 "reset"인 요소를 모두 선택 |
:submit | type 속성값이 "submit"인 요소를 모두 선택 |
:text | type 속성값이 "button"인 요소를 모두 선택 |
:input | <input> <textarea> <select> <button> 요소를 모두 선택 |
:checked | type 속성값이 "checkbox" or "radio"인 요소중에서 체크되어 있는 요소를 모두 선택 |
:selected | <option> 요소 중에서 선택된 요소를 모두 선택 |
:focus | 현재 포커스가 가지고 있는 요소를 선택 |
:disabled | 비활성화되어있는 요소를 모두 선택 |
:enabled | 활성화되어있는 요소를 모두 선택 |
선택된 요소에 접근
getter 메소드와 setter 메소드
- 선택자에 의해 선택된 요소의 값을 읽거나 설정하기 위해서는 제이쿼리 메소드를 통해 해당 요소에 접근해야 한다.
-
getter 메소드
- 선택된 요소에 접근하여 그 값을 읽어오기 위한 메소드
- 아무런 인수를 전달하지 않고 호출
-
setter 메소드
- 선택된 요소에 접근하여 그 값을 설정하기 위한 메소드
- 대입하고자 하는 값을 인수로 전달하여 호출
<h1> 요소에 접근하여 그 값을 읽어들인 후, 아이디가 "text"인 요소의 값을 해당 값으로 설정하는 예제
$(function() {
$("button").on("click", function() {
const newText = $("h1").html(); // <h1>요소의 텍스트를 읽어오는 getter 메소드
$("text").html(newText); // id가 "text"인 요소에 새로운 텍스트를 설정하는 setter 메소드
});
});
메소드 체이닝(method chaining)
- getter 메소드는 선택된 요소의 값을 읽어서 그 값을 반환한다.
- 만약 선택된 요소가 여러 개 존재하면, getter 메소드는 가장 '첫 번째 요소'의 값만을 반환
- 하지만 setter 메소드는 선택된 '모든 요소'에 인수로 전달된 값을 설정
- 그리고 선택된 모든 요소에 접근할 수 있는 또 다른 제이쿼리 객체를 반환
반환된 제이쿼리 객체를 이용하면 세미콜론(;)을 사용하지 않고도, 곧바로 다른 제이쿼리 메소드를 호출 가능
이렇게 여러 개의 메소드가 연속으로 호출되는 것을 "메소드 체이닝(method chaning)" 이라고 한다.
선택된 요소에 .find(), .eq(), .html() 메소드를 연속으로 호출하는 예제
$(function() {
$("button").on("click", function() {
// id가 "list"인 요소의 자손 요소 중에서 <li> 요소를 모두 선택한 후
// 그 중 두 번째 요소의 값을 설정
$("#list").find("li").eq(1).html("두 번째 아이템 선택");
});
});
// eq 메소드는 선택한 요소 중 지정된 요소에 해당하는 요소를 선택하는 요소
// 메소드 체이닝 중 .end() 메소드를 사용하면 바로 이전에 선택했던 요소의 집합을 다시 선택 가능
$(function() {
$("button").on("click", function() {
$("#list") // id가 "list"인 요소의 자손 요소 중에서
.find("li") // <li> 요소를 모두 선택한 후에,
.eq(1).html("두 번째 아이템 선택) // 그 중 두 번째 요소의 값을 설정
.end() // 다시 id가 "list"인 요소의 자손 요소 중에서 <li> 요소를 선택한 후에,
.eq(2).html("세 번째 아이템 선택); // 그 중 세 번째 요소의 값을 설정
});
});
.width() 메소드와 .height() 메소드
제이쿼리에서 선택한 요소의 너비나 높이를 반환하거나 설정하기 위한 함수들
$(function() {
$("#getter").on("click", function() {
let size = `너비는 ${$("#box").width()}px이고, 높이는 ${$("#box").height()}px입니다<br>`;
$("#text").html(size);
});
$("#setter").on("click", function() {
let w = $("#box").widtH();
let h = $("#box").height();
$("#box").width(w/2).hegiht(h/2);
let size = `너비는 ${$("#box").width()}px이고, 높이는 ${$("#box").height()}px로
변경되었습니다. <br>`;
$("#text").html(size);
});
.attr() 메소드
제이쿼리에서 선택한 요소의 특정 속성값을 반환하거나 설정하기 위한 함수
$(function() {
$("#button").on("click", function() {
// <img> 요소의 src 속성값을 읽어오는 getter 메소드
const imgSrc = $("img").attr("src");
// <img> 요소의 src 속성값을 새로운 값으로 설정하는 setter 메소드
$("img").attr("src", "/examples/images/img_flag.png");
});
});
대표적인 getter 메소드와 setter 메소드
메소드 | 설명 |
---|---|
.html() | 해당 요소의 HTML 콘텐츠를 반환하거나 설정 |
.text() | 해당 요소의 텍스트 콘텐츠를 반환하거나 설정 |
.width() | 해당 요소의 첫 번째 요소의 너비를 픽셀 단위의 정수로 반환하거나 설정 |
.height() | 해당 요소의 첫 번째 요소의 높이를 픽셀 단위의 정수로 반환하거나 설정 |
.attr() | 해당 요소의 명시된 속성의 속성값을 반환하거나 설정 |
.position() | 해당 요소중에서 첫 번째 요소에 대해 특정 위치에 존재하는 객체를 반환(getter) |
.val() | <form> 요소의 값을 반환하거나 설정 |
'JavaScirpt > jQuery' 카테고리의 다른 글
jQuery 6 - [스타일 설정, 프로퍼티, 클래스 설정] (0) | 2021.03.22 |
---|---|
jQuery 5 - [요소의 영역, 요소의 크기, 위치 ] (0) | 2021.03.17 |
jQuery 4 - [요소 탐색, 조상, 형제, 자손, 기타 탐색, 필터링 ] (0) | 2021.03.15 |
jQuery 3 - [요소 조작, 추가, 대체, 복사, 삭제] (0) | 2021.03.10 |
jQuery 1 - [개요, 기초, 적용] (0) | 2021.03.09 |