09009
[JQuery] 문서 객체 조작 본문
속성 조작
jquery 라이브러리를 사용하여 문서 객체 속성을 조작할 때, attr() 메서드를 사용한다.
attr() 메서드 : 매개변수를 넣는 방법에 따라 속성을 지정하거나 추출 가능 (문서 객체의 속성 조작)
속성 추출
// img 태그의 src 속성 추출
var src = $('img').attr('src');
위와 같이 attr() 메서드에 매개변수를 하나 입력하면 해당 속성을 추출한다.
jquery 라이브러리는 문서 객체 여러 개를 한 번에 선택한다.
문서 객체 여러 개를 선택하고 속성을 추출하면, 첫 번째 문서 객체 속성을 추출한다.
문서 객체 속성 추출
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
// 이벤트를 연결합니다.
$(document).ready(function() {
// 속성을 추출합니다.
var src = $('script').attr('src');
// 출력합니다.
alert(src);
});
</script>
</head>
<body>
</body>
</html>
위 소스코드는 jquery 라이브러리를 사용하여 script 태그를 선택하고 src 속성을 추출한 것이다.
script 태그가 2개 존재하므로 문서 객체 속성을 추출하면 먼저 등장하는 script 태그 속성을 추출하기 때문에 jquery 라이브러리
경로가 출력된다.
💻 출력
속성 지정
문서 객체 속성은 세 가지 방법으로 지정할 수 있다.
아래 예시는 img 태그의 src 속성을 세 가지 방법으로 지정한 것이다.
1번 방법 : 속성 값을 입력하여 지정하는 방법, attr() 메서드의 첫번째 매개변수에 속성 이름을 입력하고 두번째 매개변수에 속성 값을 입력한다.
2번 방법: 객체를 입력하여 속성을 지정하는 방법, attr() 메서드의 매개변수에 객체를 넣는다.
3번 방법: 함수를 이용하여 속성을 지정하는 방법, attr() 메서드의 첫번째 매개변수에는 속성 이름을, 두번째 매개변수에는 함수를 입력한다.
1. 속성 값을 입력하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 속성을 지정합니다.
$('img').attr('alt', 'jquery 라이브러리를 사용한 속성 지정');
$('img').attr('src', 'http://placehold.it/100x100');
$('img').attr('width', '100');
});
</script>
</head>
<body>
<img>
<img>
<img>
</body>
</html>
jquery 함수를 사용하여 img 태그를 선택하고 alt, src, width 속성을 변경하였다.
jquery 라이브러리를 사용하여 문서 객체를 선택하고 메서드를 실행하면 모든 문서 객체에 한 번에 적용된다.
💻 출력
2. 객체를 입력하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 속성을 지정합니다.
$('img').attr( {
alt: 'jquery 라이브러리를 사용한 속성 지정',
src: 'http://placehold.it/100x100',
width: 100
});
});
</script>
</head>
<body>
<img>
<img>
<img>
</body>
3. 함수를 이용하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 속성을 지정합니다.
$('img').attr( {
alt: 'jquery 라이브러리를 사용한 속성 지정',
src: function (index) {
// 변수를 선언합니다.
var size = (index + 1) * 100;
// 반환합니다.
return 'http://placehold.it/' + size + 'x100';
}
});
});
</script>
</head>
<body>
<img>
<img>
<img>
</body>
</html>
src 속성에 함수를 지정하면 콜백 함수에 index 객체가 순서대로 지정된다.
그리고 반환 값을 속성에 적용한다.
💻 출력
* 메서드 체이닝
jquery 라이브러리에서 문서 객체를 조작하는 메서드는 호출 이후에 자기 자신을 다시 반환한다.
→ $() 함수를 여러 번 사용하지 않아도 되고 아래 소스코드와 같이 메서드를 연속해서 사용이 가능함.
↓
스타일 조작
jquery 라이브러리를 사용하여 스타일을 조작할 때는 css() 메서드를 사용한다.
1. 속성 값을 입력하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 속성을 지정합니다.
$('.box').css('float','left');
$('.box').css('margin', 10);
$('.box').css('width',100);
$('.box').css('height', 100);
$('.box').css('backgroundColor','red');
});
</script>
</head>
<body>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</body>
</html>
💻 출력
소스코드를 실행하면 모든 .box 태그에 스타일이 적용되는 것을 확인할 수 있다.
2. 객체를 입력하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 속성을 지정합니다.
$('.box').css({
float: 'left',
margin: 10,
width: 100,
height: 100,
backgroundColor: 'red'
});
});
</script>
</head>
<body>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</body>
</html>
3. 함수를 이용하여 속성 지정
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
var output = '';
for (var i = 0; i < 256; i++) {
output += '<div></div>';
}
document.body.innerHTML = output;
// 스타일을 적용합니다.
$('div').css({
height: 2,
backgroundColor: function(i) {
return 'rgb(' + i + ',' + i + ',' + i + ')';
}
})
});
</script>
</head>
<body>
</body>
</html>
💻 출력
글자 조작
jquery 라이브러리로 문서 객체 내부의 글자를 조작할 때는 아래와 같은 메서드를 사용한다.
- 문서 객체 내부 글자 조작 메서드
html() | 문서 객체 내부의 HTML 태그 조작 (HTML 태그로 해석) |
text() | 문서 객체 내부의 글자 조작 (문자열로 인식) |
text() 메서드로 내부 글자 조작하기
- text() 메서드 사용: 일반 글자처럼 출력
- html() 메서드 사용: 글자에 태그가 적용됨
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 내부 글자 변경
$('h1:nth-child(1)').text('<a href="#">text()</a>')
$('h1:nth-child(2)').html('<a href="#">html()</a>')
});
</script>
</head>
<body>
<h1>Son - 0</h1>
<h1>Son - 1</h1>
</body>
</html>
💻 출력
html() 메서드로 내부 글자 조작하기
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
// 변수를 선언합니다.
var text = $('h1').text();
var html = $('h1').html();
// 출력합니다.
alert('text: ' + text);
alert('html: ' + html);
});
</script>
</head>
<body>
<h1>Son - 0</h1>
<h1>Son - 1</h1>
</body>
</html>
💻 출력
text() 메서드는 선택된 모든 문서 객체의 글자를 추출한 반면 html() 메서드는 첫번째에 위치한 문서 객체의 글자를 추출하였다.
클래스 조작
클래스 하나를 추가하고 제거하는 데 attr() 메서드를 사용한다면 문자열 연산을 수행해야 하기 때문에 번거롭다.
이러한 이유로 인하여 jquery 라이브러리는 클래스 조작 메서드를 아래와 같이 별도로 제공한다.
addClass() | 클래스 추가 |
removeClass() | 클래스 제거 |
toggleClass() | 클래스 전환 |
* hover() 메서드
첫번째 매개변수에 마우스 커서를 올렸을 때 실행할 것을 입력하고, 두번째 매개변수에 마우스 커서를 내렸을 때
실행할 것을 입력한다.
✍ 입력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#box {
width: 100px; height: 100px;
background-color: red;
}
#box.hover {
background-color: blue;
border-radius: 50px;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(document).ready(function() {
$('#box').hover(function() {
// 스타일을 변경합니다.
$('#box').addClass('hover');
}, function() {
// 스타일을 변경합니다.
$('#box').removeClass('hover');
});
});
</script>
</head>
<body>
<div id="box"></div>
</body>
</html>
💻 출력
'Front-End > JQuery' 카테고리의 다른 글
[JQuery] 무한 스크롤 (0) | 2023.04.04 |
---|---|
[JQuery] 문서 객체 생성과 추가 (0) | 2023.04.04 |
[JQuery] 시각 효과 (0) | 2023.04.04 |
[JQuery] 이벤트 (0) | 2023.04.04 |
[JQuery] 문서 객체 선택 (0) | 2023.04.03 |