본문 바로가기
jQuery

jQuery 요소의선택

by godfeeling 2020. 7. 3.

요소의 선택

제이쿼리를 사용하면 손쉽게 HTML 요소를 선택하여, 선택된 요소에 특정 동작을 설정할 수 있습니다.

 

제이쿼리에서는 요소를 선택하기 위해 대부분의 CSS 선택자뿐만 아니라 몇몇 비표준 선택자까지 제공하고 있습니다.

 

CSS 선택자를 이용한 선택

제이쿼리에서는 CSS 선택자를 사용하여 HTML 요소를 선택할 수 있습니다.

 

 

 

태그 이름을 사용하여 같은 태그 이름을 가지는 HTML 요소를 모두 선택할 수 있습니다.

 

이것은 자바스크립트의 getElementsByTagName() 메소드와 같은 동작을 합니다.

 

예제

$(function() {

 

$("p").on("click", function() { // <p>요소를 모두 선택함.

 

$("span").css("fontSize", "28px"); // <span>요소를 모두 선택함.

 

});

 

});

$() 함수에 전달되는 인수는 반드시 따옴표("")를 사용한 문자열 형태로 전달되어야 합니다.

 

아이디(id)를 사용하여 특정 HTML 요소를 선택할 수도 있습니다.

 

이것은 자바스크립트의 getElementsById() 메소드와 같은 동작을 합니다.

 

예제

$(function() {

 

$("p").on("click", function() {

 

$("#jq").css("border", "2px solid orange"); // 아이디가 "jq"인 요소를 선택함.

 

});

 

});

 

클래스(class)를 사용하여 같은 클래스에 속하는 HTML 요소를 모두 선택할 수 있습니다.

 

이것은 자바스크립트의 getElementsByClassName() 메소드와 같은 동작을 합니다.

 

예제

$(function() {

 

$("p").on("click", function() {

 

$(".jq").css("backgroundColor", "lightgray"); // 클래스가 "jq"인 요소를 모두 선택함.

 

});

 

});

 

속성(attribute)을 사용하여 속성이 조건에 맞는 특정 HTML 요소를 선택할 수 있습니다.

 

예제

$(function() {

 

$("button").on("click", function() { // <img>요소 중에서 alt 속성값이 "flower"인 요소를 모두 선택함.

 

$("img[alt='flower']").attr("src", "/examples/images/img_monalisa.png");

 

});

 

});

 

 

제이쿼리 선택자

제이쿼리에서는 CSS 선택자뿐만 아니라 몇몇 비표준 선택자까지도 사용할 수 있습니다.

 

이러한 비표준 선택자를 사용하면 선택한 요소를 저장하거나, 그 결과에 대해 필터링까지 할 수 있습니다.

 

선택한 요소의 저장

제이쿼리에서는 선택한 요소들을 변수에 저장하여 사용할 수 있습니다.

 

 

 

다음 예제는 문서 내의 모든 <li>요소를 선택하여 변수에 저장한 후, 해당 변수를 사용하는 예제입니다.

 

예제

$(function() {

 

var items = $("li"); // <li>요소를 모두 선택하여 변수 items에 저장함.

 

$("button").on("click", function() {

 

$("#len").text("저장된 <li>요소의 총 개수는 " + items.length + "개 입니다.");

 

});

 

});

 

하지만 이렇게 저장된 요소들은 변수에 저장될 당시의 요소들만 저장됩니다.

 

, 요소가 저장된 이후에 문서에 추가되거나 삭제된 요소들을 자동으로 갱신하지는 않습니다.

 

선택한 요소의 필터링

제이쿼리에서는 선택한 요소 중에서 더욱 세분화된 선택을 하기 위한 필터링을 진행할 수 있습니다.

 

 

 

다음 예제는 문서 내의 모든 <li>요소 중에서 <span>요소를 가지고 있는 요소만을 선택하는 예제입니다.

 

예제

$(function() {

 

$("button").on("click", function() {

 

$("li:has(span)").text("<span>요소를 가지고 있는 아이템이에요!");

 

});

 

});

 

input 요소의 선택

제이쿼리에서는 입력 양식에 관련된 특정 요소를 손쉽게 선택할 수 있습니다.

 

예제

$(function() {

 

$("button").on("click", function() {

 

// 체크되어 있는 요소를 모두 선택함.

 

$(":checked").next().text("체크되어 있는 요소는 이 요소입니다.");

 

});

 

});

 

getter 메소드와 setter 메소드

선택자에 의해 선택된 요소의 값을 읽거나 설정하기 위해서는 제이쿼리 메소드를 통해 해당 요소에 접근해야만 합니다.

 

 

 

getter 메소드는 선택된 요소에 접근하여 그 값을 읽어오기 위한 메소드입니다.

 

이러한 getter 메소드는 아무런 인수를 전달하지 않고 호출합니다.

 

 

 

setter 메소드는 선택된 요소에 접근하여 그 값을 설정하기 위한 메소드입니다.

 

이러한 setter 메소드는 대입하고자 하는 값을 인수로 전달하여 호출합니다.

 

 

 

다음 예제는 <h1>요소에 접근하여 그 값을 읽어들인 후, 아이디가 "text"인 요소의 값을 해당 값으로 설정하는 예제입니다.

 

예제

$(function() {

 

$("button").on("click", function() {

 

var newText = $("h1").html(); // <h1>요소의 텍스트를 읽어오는 getter 메소드

 

$("#text").html(newText); // id"text"인 요소에 새로운 텍스트를 설정하는 setter 메소드

 

});

 

});

 

위 예제의 번 라인처럼 .html() 메소드에 인수를 전달하지 않고 호출하면, 해당 HTML 요소에서 값을 읽어오는 getter 메소드로 사용됩니다.

 

하지만 번 라인처럼 인수를 전달하고 호출하면, 해당 HTML 요소에 새로운 값을 설정하는 setter 메소드로 사용됩니다.

 

메소드 체이닝(method chaining)

getter 메소드는 선택된 요소의 값을 읽어서 그 값을 반환합니다.

 

만약 선택된 요소가 여러 개 존재하면, getter 메소드는 가장 '첫 번째 요소'의 값만을 반환할 것입니다.

 

 

 

하지만 setter 메소드는 선택된 '모든 요소'에 인수로 전달된 값을 설정합니다.

 

그리고 선택된 모든 요소에 접근할 수 있는 또 다른 제이쿼리 객체를 반환합니다.

 

 

 

이렇게 반환된 제이쿼리 객체를 이용하면 세미콜론(;)을 사용하지 않고도, 곧바로 다른 제이쿼리 메소드를 호출할 수 있습니다.

 

이런 방식으로 여러 개의 메소드가 연속으로 호출되는 것을 메소드 체이닝(method chaining)이라고 합니다.

 

 

 

다음 예제는 선택된 요소에 .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("세 번째 아이템도 선택했어요!!"); // 그 중에서 세 번째 요소의 값을 설정함.

 

});

 

});

 

위 예제의 번 라인에서는 .eq() 메소드를 사용하여 번 라인에서 .find() 메소드로 선택한 요소의 집합 중 두 번째 요소를 선택합니다.

 

그리고 번 라인에서 .end() 메소드를 사용하여 .eq() 메소드를 사용하기 이전 집합을 다시 선택하고 있습니다.

 

따라서 번 라인에서 또다시 .eq() 메소드를 사용하여 요소를 선택할 수 있게 됩니다.

 

.width() 메소드와 .height() 메소드

제이쿼리에서는 선택한 요소의 너비나 높이를 반환하거나 설정하기 위한 .width() 메소드와 .height() 메소드를 제공합니다.

 

예제

$(function() {

 

$("#getter").on("click", function() {

 

var size = "너비는 " + $("#box").width() + "px이고, 높이는 "

 

+ $("#box").height() + "px입니다.<br>";

 

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

 

});

 

$("#setter").on("click", function() {

 

w = $("#box").width();

 

h = $("#box").height();

 

$("#box").width(w/2).height(h/2);

 

 

 

var size = "너비는 " + $("#box").width() + "px이고, 높이는 "

 

+ $("#box").height() + "px로 변경되었습니다.<br>";

 

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

 

});

 

});

 

위의 예제에서는 선택한 요소의 너비와 높이 값을 얻기 위해 번부터 , 번과 번 라인까지 .width() 메소드와 .height() 메소드를 getter 메소드로 사용하고 있습니다.

 

하지만 번 라인에서 .width() 메소드와 .height() 메소드는 인수를 전달받아 너비와 높이 값을 설정하기 위한 setter 메소드로 사용하고 있습니다.

 

.attr() 메소드

.attr() 메소드는 선택한 요소의 특정 속성값을 반환하거나 설정하기 위해 사용합니다.

 

예제

$(function() {

 

$("button").on("click", function() {

 

// <img>요소의 src 속성값을 읽어오는 getter 메소드

 

var imgSrc = $("img").attr("src");

 

// <img>요소의 src 속성값을 새로운 값으로 설정하는 setter 메소드

 

$("img").attr("src", "/examples/images/img_flag.png");

 

});

 

});

위 예제의 번 라인에서는 .attr() 메소드에 인수를 하나만 전달하여, 해당 HTML 요소에서 인수로 전달받은 이름의 속성값을 읽어오는 getter 메소드로 사용하고 있습니다.

 

하지만 번 라인에서는 인수를 두 개 전달하여, 해당 HTML 요소에 첫 번째 인수로 전달받은 이름의 속성값으로 두 번째 인수로전달받은 값을 설정하는 setter 메소드로 사용하고 있습니다.

 

 

'jQuery' 카테고리의 다른 글

jQuery 요소의영역  (0) 2020.07.03
jQuery 요소의탐색  (0) 2020.07.03
jQuery 요소의조작  (0) 2020.07.03
jQuery 기본  (0) 2020.07.03
jQuery 기초  (0) 2020.07.03

댓글