-
1. ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋ ํ ์คํํ๊ธฐ
-
โ [๋ฐฉ๋ฒ 1] ์๋ชป๋ ๋ฐฉ๋ฒ (jQuery๊ฐ ๋จผ์ ์คํ๋จ)
-
โญ [๋ฐฉ๋ฒ 2] $(document).ready() ์ฌ์ฉ
-
โญ [๋ฐฉ๋ฒ 3] <script>๋ฅผ <body> ๋์ ๋ฐฐ์น
-
2. jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จผ์ ๋ก๋ํ๊ธฐ
-
3. $ ์ถฉ๋ ๋ฐฉ์ง (noConflict ์ฌ์ฉ)
-
4. ์ด๋ฒคํธ ์ค๋ณต ๋ฐฉ์ง
-
5. AJAX ์์ฒญ ์ cache: false ์ค์
-
6. ๋์ ์ผ๋ก ์ถ๊ฐ๋ ์์์ ์ด๋ฒคํธ ์ ์ฉํ๋ ๋ฒ (on)
-
7. ์ฑ๋ฅ ์ต์ ํ (each๋ณด๋ค map ์ฌ์ฉ)
-
8. ํฌ์คํ ์ ๋ง์น๋ฉฐ(TMI)

โญ ๋ฌธ์๊ฐ ๋ก๋๋ ํ ์คํํ์
โญ jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จผ์ ๋ก๋ํ์
โญ $ ์ถฉ๋ ๋ฐฉ์ง ํ์ ์ noConflict
โญ ์ด๋ฒคํธ ์ค๋ณต ๋ฐฉ์ง off()
โญ AJAX ์บ์ฑ ๋ฐฉ์ง (cache: false)
โญ ๋์ ์์์ ์ด๋ฒคํธ ์ ์ฉ on()
โญ ์ฑ๋ฅ ์ต์ ํ (map(), .append() ์ต์ํ)
1. ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋ ํ ์คํํ๊ธฐ
์ ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ถ๋ฌ์์ผ ํ๋ค.
๊ทธ๋์ HTML์ด ๋ก๋๋๊ธฐ ์ ์ jQuery ์ฝ๋๊ฐ ์คํ๋๋ฉด ์์๋ฅผ ์ฐพ์ ์ ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๐ ํด๊ฒฐ์ฑ
: $(document).ready() ์ฌ์ฉ ๋๋ <script>๋ฅผ <body> ๋์ ๋ฐฐ์น
โ [๋ฐฉ๋ฒ 1] ์๋ชป๋ ๋ฐฉ๋ฒ (jQuery๊ฐ ๋จผ์ ์คํ๋จ)
[๋ฐฉ๋ฒ1]์ ์ ์ด์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์คํ๋๊ณ ๊ทธ ๋ค์ <body> ์์ญ์์ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฌ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด <body>๊ฐ ์์ฑ๋๊ธฐ ์ ์ ์ ํ์๊ฐ ๋จผ์ ์คํ๋์ด ์ ํ์๋ก ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ ํํ ์ ์๋ค.
๋ฐ๋์ <body> ์์ญ์ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ถ๋ฌ์จ ๋ค์ ์ ํ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก [๋ฐฉ๋ฒ2]๋ [๋ฐฉ๋ฒ3]๊ณผ ๊ฐ์ด ์์ฑํด์ผ ํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>์๋ชป๋ ์ ์ฉ</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
// ๋ฌธ์๊ฐ ๋ก๋๋๊ธฐ ์ ์ ์ ํ์๊ฐ ์คํ๋จ (๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ)
$("#test").text("์๋
ํ์ธ์!");
</script>
</head>
<body>
<p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p>
</body>
</html>
โญ [๋ฐฉ๋ฒ 2] $(document).ready() ์ฌ์ฉ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>์ฌ๋ฐ๋ฅธ ์ ์ฉ (ready ์ฌ์ฉ)</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$("#test").text("์๋
ํ์ธ์!");
});
</script>
</head>
<body>
<p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p>
</body>
</html>
$(document).ready()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋ ํ ์ฝ๋๊ฐ ์คํ๋๋ฏ๋ก ์ ํ์๊ฐ ์ ์์ ์ผ๋ก ์๋ํจ
โญ [๋ฐฉ๋ฒ 3] <script>๋ฅผ <body> ๋์ ๋ฐฐ์น
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>์ฌ๋ฐ๋ฅธ ์ ์ฉ (script๋ฅผ body ๋์ ๋ฐฐ์น)</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p>
<script>
$("#test").text("์๋
ํ์ธ์!");
</script>
</body>
</html>
<script> ํ๊ทธ๋ฅผ <body>์ ๋ง์ง๋ง์ ๋ฐฐ์นํ๋ฉด ๋ฌธ์ ๊ฐ์ฒด๊ฐ ๋จผ์ ๋ก๋๋ ํ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฏ๋ก $(document).ready() ์์ด๋ ์ ์ ๋์ํจ
2. jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จผ์ ๋ก๋ํ๊ธฐ
- jQuery๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์์ผ ํจ
- CDN์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ํจ
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
or (์คํ๋ผ์ธ ์ฌ์ฉ ์)
<script src="js/jquery.min.js"></script>
3. $ ์ถฉ๋ ๋ฐฉ์ง (noConflict ์ฌ์ฉ)
- $ ๊ธฐํธ๊ฐ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: Prototype.js)์ ์ถฉ๋ํ ์ ์์
- jQuery.noConflict()๋ฅผ ์ฌ์ฉํ๋ฉด $ ๋์ jQuery ์ฌ์ฉ ๊ฐ๋ฅ
let $jq = jQuery.noConflict();
$jq("#test").text("์๋
ํ์ธ์!");
4. ์ด๋ฒคํธ ์ค๋ณต ๋ฐฉ์ง
- $(document).ready() ๋ด๋ถ์์ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ ์, ์ฌ๋ฌ ๋ฒ ์คํ๋ ์ ์์
- off()๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ด๋ฒคํธ ์ ๊ฑฐ ํ ๋ค์ ๋ฐ์ธ๋ฉ
$("#btn").off("click").on("click", function() {
alert("๋ฒํผ ํด๋ฆญ!");
});
5. AJAX ์์ฒญ ์ cache: false ์ค์
- ๋ธ๋ผ์ฐ์ ๊ฐ AJAX ์์ฒญ์ ์บ์ฑํ๋ฉด ์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์๋์ง ์์ ์ ์์
- cache: false ์ต์ ์ ์ถ๊ฐํ์ฌ ํญ์ ์ต์ ๋ฐ์ดํฐ ์์ฒญ
$.ajax({
url: "data.json",
type: "GET",
dataType: "json",
cache: false, // ์บ์ฑ ๋ฐฉ์ง
success: function(data) {
console.log(data);
}
});
6. ๋์ ์ผ๋ก ์ถ๊ฐ๋ ์์์ ์ด๋ฒคํธ ์ ์ฉํ๋ ๋ฒ (on)
- ๋์ ์ผ๋ก ์ถ๊ฐ๋ ์์์๋ .click() ๊ฐ์ ์ด๋ฒคํธ๊ฐ ์ ์ฉ๋์ง ์์
- ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๋ฅผ ์์ํ๋ฉด ๋์ ์์๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
// ๊ธฐ์กด ์์๋ง ์ ์ฉ๋จ
$(".btn").click(function() {
alert("๋ฒํผ ํด๋ฆญ!");
});
// ๋์ ์์์๋ ์ ์ฉ๋จ (์ด๋ฒคํธ ์์ ๋ฐฉ์)
$(document).on("click", ".btn", function() {
alert("๋์ ๋ฒํผ ํด๋ฆญ!");
});
7. ์ฑ๋ฅ ์ต์ ํ (each๋ณด๋ค map ์ฌ์ฉ)
- each()๋ณด๋ค map()์ด ์ฑ๋ฅ์ด ๋ ์ข์
- .append()๋ ํ ๋ฒ๋ง ์คํํ๋ ๊ฒ์ด ์ข์
// ๋นํจ์จ์ ์ธ ๋ฐฉ์
$(".items").each(function() {
$(this).text("๋ณ๊ฒฝ๋จ");
});
// ํจ์จ์ ์ธ ๋ฐฉ์
$(".items").text("๋ณ๊ฒฝ๋จ");
8. ํฌ์คํ ์ ๋ง์น๋ฉฐ(TMI)
jQuery๊ฐ ํ๋ ์น ๊ฐ๋ฐ์ ํ์ค์ด์์ง๋ง, ์์ฆ์ "ํ๋ฑ์ฟผ๋ฆฌ"๋ผ๋ ๋ณ๋ช
์ด ๋ถ์ ์ ๋๋ก ์ฌ๋ํ ๊ธฐ์ ๋ก ์ทจ๊ธ๋๊ธฐ๋ ํ๋ค. ๊ทธ๋์ ํ์๋ jQuery๊ฐ ์ฌ์ ํ ์ค์ํ ์ด์ ๋ฅผ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ๋ค.
๋๋ผ์ด ์ฌ์ค 2025 ํ์ฌ์๋ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์น์ด๋ ๊ฐ๋ฐ์๊ฐ ์๋นํ๋ค๋ ์ฌ์ค์ด๋ค. 2024๋
๊ธฐ์ค์ผ๋ก ๋๋๊ฒ๋ ์ ์ธ๊ณ ์น์ฌ์ดํธ ์ค 76.9%๊ฐ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ ์ฒด JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค jQuery๊ฐ ์ฌ์ฉ๋ 1์๋ฅผ ์ฐจ์งํ๊ณ ์๋ค. jQuery ๋ํ ๊ฒฝ๋ํ์ ๋ธ๋ผ์ฐ์ ํธํ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฑ์ ํตํด ์์ฒด์ ์ผ๋ก ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋ค.
1. ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์ ํ์์ด๋ค.
- ๊ธฐ์กด ํ๋ก์ ํธ์์๋ ์ฌ์ ํ jQuery๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ ์ค
- jQuery๋ฅผ ๊ฑท์ด๋ด๋ ค๋ฉด ๋ง์ ์ฝ๋ ์์ ์ด ํ์ํ๊ณ , ๊ธฐ์ ์์๋ ์ด๋ฐ ๋ฆฌํฉํ ๋ง์ ๊บผ๋ฆผ
- ์ ์ง๋ณด์ ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐ ์ jQuery๋ฅผ ๋ค๋ฃฐ ์ค ์์์ผ ํจ
๐ ์๋ฅผ ๋ค๋ฉด?
์ ๋ถ ์ฌ์ดํธ, ๊ธฐ์
๋ด๋ถ ์์คํ
, ์๋ํ๋ ์ค ํ๋ฌ๊ทธ์ธ, ์ค๋๋ ๊ด๋ฆฌ์ ํ์ด์ง ๋ฑ
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ ๋ ํ์ํ ์ผ์ด ์๋ค.
- ๋ถํธ์คํธ๋ฉ 4 ์ดํ ๋ฒ์ ์ jQuery๋ฅผ ํ์๋ก ํจ
- DataTables, Select2, jQuery UI ๊ฐ์ ํ๋ฌ๊ทธ์ธ๋ ์ฌ์ ํ ์ธ๊ธฐ
- ์์ ํ ๋ฐฐ์ ํ๊ธฐ ์ด๋ ต๊ณ , ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ํ์ํจ
3. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ๋ฌธ์
- JavaScript์ ํ์คํ๊ฐ ์งํ๋์์ง๋ง, ์ฌ์ ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐจ์ด๊ฐ ์กด์ฌ
- jQuery๋ ์ค๋์ ๋ถํฐ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ ํด๊ฒฐํ๋ ์ญํ ์ ํด์์
- ํนํ IE ์ง์์ด ํ์ํ ํ๋ก์ ํธ์์๋ jQuery๊ฐ ๋งค์ฐ ์ ์ฉ
// ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์ (jQuery)
$("#btn").on("click", function() {
alert("ํด๋ฆญ๋จ!");
});
// ๋ฐ๋๋ผ JS (IE 11์์ ์ค๋ฅ ๊ฐ๋ฅ)
document.getElementById("btn").addEventListener("click", function() {
alert("ํด๋ฆญ๋จ!");
});
4. ๋ฐ๋๋ผ๋ณด๋ค ์ฝ๋๊ฐ ์งง๊ณ ๊ฐ๊ฒฐํ๋ค
- ์์ JavaScript๋ณด๋ค ์งง๊ณ ์ง๊ด์ ์ธ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- ์ ํ์, ์ ๋๋ฉ์ด์ , AJAX ๋ฑ์ ๊ธฐ๋ฅ์ด ๋จ์ํ ๋ฌธ๋ฒ์ผ๋ก ๊ฐ๋ฅ
// jQuery (๊ฐ๋จ)
$.get("data.json", function(data) {
console.log(data);
});
// ๋ฐ๋๋ผ JS (๊ธธ์ด์ง)
fetch("data.json")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
5. DOM ์กฐ์์ด ํธ๋ฆฌํ๋ค
- append, remove, find ๊ฐ์ ํจ์๊ฐ ์ง๊ด์ ์ด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์
- ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ์์์ด ๊ฐํธํจ
๐ ์๋ฅผ ๋ค๋ฉด?
์๋์ฒ๋ผ ๋์ ์์ ์ถ๊ฐ ๋ฐ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉํ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ด์ฟผ๋ฆฌ๊ฐ ํจ์ฌ ๊ฐ๋จํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
// jQuery (๊ฐ๋จ)
$(document).on("click", ".btn", function() {
alert("๋์ ์ผ๋ก ์ถ๊ฐ๋ ๋ฒํผ ํด๋ฆญ!");
});
$("#container").append('<button class="btn">ํด๋ฆญ</button>');
// ๋ฐ๋๋ผ JS (๋ณต์ก)
document.getElementById("container").addEventListener("click", function(event) {
if (event.target.classList.contains("btn")) {
alert("๋์ ์ผ๋ก ์ถ๊ฐ๋ ๋ฒํผ ํด๋ฆญ!");
}
});
document.getElementById("container").insertAdjacentHTML('beforeend', '<button class="btn">ํด๋ฆญ</button>');
ํ์ง๋ง ์๋ก์ด ํ๋ก์ ํธ์์๋ jQuery๋ณด๋ค ๋ฐ๋๋ผ JS, React, Vue ๊ฐ์ ์ต์ ๊ธฐ์ ์ ์ฐ์ ๊ณ ๋ คํ๋ค. ๋ฐ๋ผ์ jQuery๋ฅผ ๋ฐฐ์ฐ๋๋ผ๋ ES6+, Fetch API, CSS3๋ฅผ ํจ๊ป ์ตํ๋ ๊ฒ์ด ์ค์ํ๋ค. ํ ๋ง๋๋ก, jQuery๊ฐ ํ๋ฑ ๊ธฐ์ ์ ๋ง์ง๋ง, ์์ ํ ์ฃฝ์ ๊ฑด ์๋๋ค. ์์ง๋ ํ์ํ ๋๊ฐ ๋ง์ผ๋, ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ฐ๋์ ์์๋๋ ๊ฒ ์ข๋ค.
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

โญ ๋ฌธ์๊ฐ ๋ก๋๋ ํ ์คํํ์
โญ jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จผ์ ๋ก๋ํ์
โญ $ ์ถฉ๋ ๋ฐฉ์ง ํ์ ์ noConflict
โญ ์ด๋ฒคํธ ์ค๋ณต ๋ฐฉ์ง off()
โญ AJAX ์บ์ฑ ๋ฐฉ์ง (cache: false)
โญ ๋์ ์์์ ์ด๋ฒคํธ ์ ์ฉ on()
โญ ์ฑ๋ฅ ์ต์ ํ (map(), .append() ์ต์ํ)
1. ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋ ํ ์คํํ๊ธฐ
์ ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ถ๋ฌ์์ผ ํ๋ค.
๊ทธ๋์ HTML์ด ๋ก๋๋๊ธฐ ์ ์ jQuery ์ฝ๋๊ฐ ์คํ๋๋ฉด ์์๋ฅผ ์ฐพ์ ์ ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๐ ํด๊ฒฐ์ฑ
: $(document).ready() ์ฌ์ฉ ๋๋ <script>๋ฅผ <body> ๋์ ๋ฐฐ์น
โ [๋ฐฉ๋ฒ 1] ์๋ชป๋ ๋ฐฉ๋ฒ (jQuery๊ฐ ๋จผ์ ์คํ๋จ)
[๋ฐฉ๋ฒ1]์ ์ ์ด์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์คํ๋๊ณ ๊ทธ ๋ค์ <body> ์์ญ์์ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฌ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด <body>๊ฐ ์์ฑ๋๊ธฐ ์ ์ ์ ํ์๊ฐ ๋จผ์ ์คํ๋์ด ์ ํ์๋ก ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ ํํ ์ ์๋ค.
๋ฐ๋์ <body> ์์ญ์ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ถ๋ฌ์จ ๋ค์ ์ ํ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก [๋ฐฉ๋ฒ2]๋ [๋ฐฉ๋ฒ3]๊ณผ ๊ฐ์ด ์์ฑํด์ผ ํ๋ค.
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>์๋ชป๋ ์ ์ฉ</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> // ๋ฌธ์๊ฐ ๋ก๋๋๊ธฐ ์ ์ ์ ํ์๊ฐ ์คํ๋จ (๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ) $("#test").text("์๋
ํ์ธ์!"); </script> </head> <body> <p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p> </body> </html>
โญ [๋ฐฉ๋ฒ 2] $(document).ready() ์ฌ์ฉ
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>์ฌ๋ฐ๋ฅธ ์ ์ฉ (ready ์ฌ์ฉ)</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { $("#test").text("์๋
ํ์ธ์!"); }); </script> </head> <body> <p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p> </body> </html>
$(document).ready()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋ ํ ์ฝ๋๊ฐ ์คํ๋๋ฏ๋ก ์ ํ์๊ฐ ์ ์์ ์ผ๋ก ์๋ํจ
โญ [๋ฐฉ๋ฒ 3] <script>๋ฅผ <body> ๋์ ๋ฐฐ์น
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>์ฌ๋ฐ๋ฅธ ์ ์ฉ (script๋ฅผ body ๋์ ๋ฐฐ์น)</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <p id="test">๋ณ๊ฒฝ๋ ํ
์คํธ</p> <script> $("#test").text("์๋
ํ์ธ์!"); </script> </body> </html>
<script> ํ๊ทธ๋ฅผ <body>์ ๋ง์ง๋ง์ ๋ฐฐ์นํ๋ฉด ๋ฌธ์ ๊ฐ์ฒด๊ฐ ๋จผ์ ๋ก๋๋ ํ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฏ๋ก $(document).ready() ์์ด๋ ์ ์ ๋์ํจ
2. jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จผ์ ๋ก๋ํ๊ธฐ
- jQuery๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ jQuery ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์์ผ ํจ
- CDN์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ํจ
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
or (์คํ๋ผ์ธ ์ฌ์ฉ ์)
<script src="js/jquery.min.js"></script>
3. $ ์ถฉ๋ ๋ฐฉ์ง (noConflict ์ฌ์ฉ)
- $ ๊ธฐํธ๊ฐ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: Prototype.js)์ ์ถฉ๋ํ ์ ์์
- jQuery.noConflict()๋ฅผ ์ฌ์ฉํ๋ฉด $ ๋์ jQuery ์ฌ์ฉ ๊ฐ๋ฅ
let $jq = jQuery.noConflict(); $jq("#test").text("์๋
ํ์ธ์!");
4. ์ด๋ฒคํธ ์ค๋ณต ๋ฐฉ์ง
- $(document).ready() ๋ด๋ถ์์ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ ์, ์ฌ๋ฌ ๋ฒ ์คํ๋ ์ ์์
- off()๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ด๋ฒคํธ ์ ๊ฑฐ ํ ๋ค์ ๋ฐ์ธ๋ฉ
$("#btn").off("click").on("click", function() { alert("๋ฒํผ ํด๋ฆญ!"); });
5. AJAX ์์ฒญ ์ cache: false ์ค์
- ๋ธ๋ผ์ฐ์ ๊ฐ AJAX ์์ฒญ์ ์บ์ฑํ๋ฉด ์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์๋์ง ์์ ์ ์์
- cache: false ์ต์ ์ ์ถ๊ฐํ์ฌ ํญ์ ์ต์ ๋ฐ์ดํฐ ์์ฒญ
$.ajax({ url: "data.json", type: "GET", dataType: "json", cache: false, // ์บ์ฑ ๋ฐฉ์ง success: function(data) { console.log(data); } });
6. ๋์ ์ผ๋ก ์ถ๊ฐ๋ ์์์ ์ด๋ฒคํธ ์ ์ฉํ๋ ๋ฒ (on)
- ๋์ ์ผ๋ก ์ถ๊ฐ๋ ์์์๋ .click() ๊ฐ์ ์ด๋ฒคํธ๊ฐ ์ ์ฉ๋์ง ์์
- ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๋ฅผ ์์ํ๋ฉด ๋์ ์์๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
// ๊ธฐ์กด ์์๋ง ์ ์ฉ๋จ $(".btn").click(function() { alert("๋ฒํผ ํด๋ฆญ!"); }); // ๋์ ์์์๋ ์ ์ฉ๋จ (์ด๋ฒคํธ ์์ ๋ฐฉ์) $(document).on("click", ".btn", function() { alert("๋์ ๋ฒํผ ํด๋ฆญ!"); });
7. ์ฑ๋ฅ ์ต์ ํ (each๋ณด๋ค map ์ฌ์ฉ)
- each()๋ณด๋ค map()์ด ์ฑ๋ฅ์ด ๋ ์ข์
- .append()๋ ํ ๋ฒ๋ง ์คํํ๋ ๊ฒ์ด ์ข์
// ๋นํจ์จ์ ์ธ ๋ฐฉ์ $(".items").each(function() { $(this).text("๋ณ๊ฒฝ๋จ"); }); // ํจ์จ์ ์ธ ๋ฐฉ์ $(".items").text("๋ณ๊ฒฝ๋จ");
8. ํฌ์คํ ์ ๋ง์น๋ฉฐ(TMI)
jQuery๊ฐ ํ๋ ์น ๊ฐ๋ฐ์ ํ์ค์ด์์ง๋ง, ์์ฆ์ "ํ๋ฑ์ฟผ๋ฆฌ"๋ผ๋ ๋ณ๋ช
์ด ๋ถ์ ์ ๋๋ก ์ฌ๋ํ ๊ธฐ์ ๋ก ์ทจ๊ธ๋๊ธฐ๋ ํ๋ค. ๊ทธ๋์ ํ์๋ jQuery๊ฐ ์ฌ์ ํ ์ค์ํ ์ด์ ๋ฅผ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ๋ค.
๋๋ผ์ด ์ฌ์ค 2025 ํ์ฌ์๋ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์น์ด๋ ๊ฐ๋ฐ์๊ฐ ์๋นํ๋ค๋ ์ฌ์ค์ด๋ค. 2024๋
๊ธฐ์ค์ผ๋ก ๋๋๊ฒ๋ ์ ์ธ๊ณ ์น์ฌ์ดํธ ์ค 76.9%๊ฐ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ ์ฒด JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค jQuery๊ฐ ์ฌ์ฉ๋ 1์๋ฅผ ์ฐจ์งํ๊ณ ์๋ค. jQuery ๋ํ ๊ฒฝ๋ํ์ ๋ธ๋ผ์ฐ์ ํธํ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฑ์ ํตํด ์์ฒด์ ์ผ๋ก ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋ค.
1. ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์ ํ์์ด๋ค.
- ๊ธฐ์กด ํ๋ก์ ํธ์์๋ ์ฌ์ ํ jQuery๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ ์ค
- jQuery๋ฅผ ๊ฑท์ด๋ด๋ ค๋ฉด ๋ง์ ์ฝ๋ ์์ ์ด ํ์ํ๊ณ , ๊ธฐ์ ์์๋ ์ด๋ฐ ๋ฆฌํฉํ ๋ง์ ๊บผ๋ฆผ
- ์ ์ง๋ณด์ ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐ ์ jQuery๋ฅผ ๋ค๋ฃฐ ์ค ์์์ผ ํจ
๐ ์๋ฅผ ๋ค๋ฉด?
์ ๋ถ ์ฌ์ดํธ, ๊ธฐ์
๋ด๋ถ ์์คํ
, ์๋ํ๋ ์ค ํ๋ฌ๊ทธ์ธ, ์ค๋๋ ๊ด๋ฆฌ์ ํ์ด์ง ๋ฑ
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ ๋ ํ์ํ ์ผ์ด ์๋ค.
- ๋ถํธ์คํธ๋ฉ 4 ์ดํ ๋ฒ์ ์ jQuery๋ฅผ ํ์๋ก ํจ
- DataTables, Select2, jQuery UI ๊ฐ์ ํ๋ฌ๊ทธ์ธ๋ ์ฌ์ ํ ์ธ๊ธฐ
- ์์ ํ ๋ฐฐ์ ํ๊ธฐ ์ด๋ ต๊ณ , ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ํ์ํจ
3. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ๋ฌธ์
- JavaScript์ ํ์คํ๊ฐ ์งํ๋์์ง๋ง, ์ฌ์ ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐจ์ด๊ฐ ์กด์ฌ
- jQuery๋ ์ค๋์ ๋ถํฐ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ ํด๊ฒฐํ๋ ์ญํ ์ ํด์์
- ํนํ IE ์ง์์ด ํ์ํ ํ๋ก์ ํธ์์๋ jQuery๊ฐ ๋งค์ฐ ์ ์ฉ
// ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์ (jQuery) $("#btn").on("click", function() { alert("ํด๋ฆญ๋จ!"); }); // ๋ฐ๋๋ผ JS (IE 11์์ ์ค๋ฅ ๊ฐ๋ฅ) document.getElementById("btn").addEventListener("click", function() { alert("ํด๋ฆญ๋จ!"); });
4. ๋ฐ๋๋ผ๋ณด๋ค ์ฝ๋๊ฐ ์งง๊ณ ๊ฐ๊ฒฐํ๋ค
- ์์ JavaScript๋ณด๋ค ์งง๊ณ ์ง๊ด์ ์ธ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- ์ ํ์, ์ ๋๋ฉ์ด์ , AJAX ๋ฑ์ ๊ธฐ๋ฅ์ด ๋จ์ํ ๋ฌธ๋ฒ์ผ๋ก ๊ฐ๋ฅ
// jQuery (๊ฐ๋จ) $.get("data.json", function(data) { console.log(data); }); // ๋ฐ๋๋ผ JS (๊ธธ์ด์ง) fetch("data.json") .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
5. DOM ์กฐ์์ด ํธ๋ฆฌํ๋ค
- append, remove, find ๊ฐ์ ํจ์๊ฐ ์ง๊ด์ ์ด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์
- ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ์์์ด ๊ฐํธํจ
๐ ์๋ฅผ ๋ค๋ฉด?
์๋์ฒ๋ผ ๋์ ์์ ์ถ๊ฐ ๋ฐ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉํ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ด์ฟผ๋ฆฌ๊ฐ ํจ์ฌ ๊ฐ๋จํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
// jQuery (๊ฐ๋จ) $(document).on("click", ".btn", function() { alert("๋์ ์ผ๋ก ์ถ๊ฐ๋ ๋ฒํผ ํด๋ฆญ!"); }); $("#container").append('<button class="btn">ํด๋ฆญ</button>');
// ๋ฐ๋๋ผ JS (๋ณต์ก) document.getElementById("container").addEventListener("click", function(event) { if (event.target.classList.contains("btn")) { alert("๋์ ์ผ๋ก ์ถ๊ฐ๋ ๋ฒํผ ํด๋ฆญ!"); } }); document.getElementById("container").insertAdjacentHTML('beforeend', '<button class="btn">ํด๋ฆญ</button>');
ํ์ง๋ง ์๋ก์ด ํ๋ก์ ํธ์์๋ jQuery๋ณด๋ค ๋ฐ๋๋ผ JS, React, Vue ๊ฐ์ ์ต์ ๊ธฐ์ ์ ์ฐ์ ๊ณ ๋ คํ๋ค. ๋ฐ๋ผ์ jQuery๋ฅผ ๋ฐฐ์ฐ๋๋ผ๋ ES6+, Fetch API, CSS3๋ฅผ ํจ๊ป ์ตํ๋ ๊ฒ์ด ์ค์ํ๋ค. ํ ๋ง๋๋ก, jQuery๊ฐ ํ๋ฑ ๊ธฐ์ ์ ๋ง์ง๋ง, ์์ ํ ์ฃฝ์ ๊ฑด ์๋๋ค. ์์ง๋ ํ์ํ ๋๊ฐ ๋ง์ผ๋, ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ฐ๋์ ์์๋๋ ๊ฒ ์ข๋ค.