jQuery ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ๋ฐฉ์งํ๋ 4๊ฐ์ง ๋ฐฉ๋ฒ
์น ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํน์ ์์๋ฅผ ํด๋ฆญํ๋๋ฐ, ์ํ์ง ์์๋ ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๊น์ง ํจ๊ป ์คํ๋๋ ๊ฒฝํ์ ํด๋ณด์ จ์ ๊ฒ๋๋ค. ์ด๋ '์ด๋ฒคํธ ๋ฒ๋ธ๋ง(Event Bubbling)'์ด๋ผ๋ ํ์ ๋๋ฌธ์ธ๋ฐ์. ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ ์ดํดํ๊ณ ํ์ฉํ๋ฉด ์ ์ฉํ์ง๋ง, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๊ธฐ์น ์์ ๋์์ ์ ๋ฐํ์ฌ ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ jQuery์์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด ๋ฌด์์ธ์ง ์์๋ณด๊ณ , ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๋ ๋ค ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์ฝ๋ ์์ ์ ํจ๊ป ์์ธํ ์ค๋ช ํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด ๊ธ์ ํตํด ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ๋ํ ์ดํด๋ฅผ ๋์ด๊ณ , ๋ ๊น๋ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ ์ป์ผ์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด๋ ๋ฌด์์ผ๊น์?
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ํน์ DOM ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ๊ทธ ์ด๋ฒคํธ๊ฐ ์์ ์์๋ก ์ฐ์ด์ด ์ ํ๋๋ ํ์์ ๋งํฉ๋๋ค. ๋ง์น ๋ฌผ์์ ๊ฑฐํ์ด ์๋ฉด์ผ๋ก ์ฌ๋ผ์ค๋ ๋ชจ์ต๊ณผ ๋น์ทํ๋ค๊ณ ํด์ '๋ฒ๋ธ๋งโ์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์์ฃ .
์๋ฅผ ๋ค์ด, <div> ์์ ์๋ <button>์ ํด๋ฆญํ๋ฉด, ๋จผ์ <button>์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ , ์ด์ด์ ๋ถ๋ชจ์ธ <div>์ ํด๋ฆญ ์ด๋ฒคํธ, ๊ทธ๋ฆฌ๊ณ <body>, <html>, document ๊ฐ์ฒด ์์๋ก ์ด๋ฒคํธ๊ฐ ์ฐ์์ ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ด๋ฌํ ๋์์ ์ด๋ฒคํธ ์์(event delegation)๊ณผ ๊ฐ์ด ์ ์ฉํ ํจํด์ ๊ตฌํํ ๋ ๋์์ด ๋์ง๋ง, ๊ฐ ์์์ ๋ค๋ฅธ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ ๊ฒฝ์ฐ ์๋์น ์์ ๋์์ ์ผ์ผํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ ์ฐฝ ๋ด๋ถ๋ฅผ ํด๋ฆญํ๋๋ฐ ํ์ ์ฐฝ์ ๋ซ๋ ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๊น์ง ์คํ๋์ด ํ์ ์ด ๋ซํ๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒคํธ ์ ํ๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ ์ด๋์ง ์์ ๋ฒ๋ธ๋ง์ ๋ฌธ์ ์
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด, ์ด๋ฒคํธ๊ฐ ๋ถ๋ชจ ์์๋ก ์ ํ๋๋ฉด์ ์๋์น ์์ ๋์์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ค์ ์ฌ๋ก๋ฅผ ํตํด ๋ฌธ์ ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ํํ ์๋ ํ์
์ฐฝ(๋ชจ๋ฌ)์
๋๋ค. ๋ณดํต ํ์
์ฐฝ ๋ฐ๊นฅ์ ์ด๋์ด ๋ฐฐ๊ฒฝ(overlay)์ ํด๋ฆญํ๋ฉด ํ์
์ด ๋ซํ๋๋ก ๊ตฌํํฉ๋๋ค. ์ด๋ ๋ฐฐ๊ฒฝ <div>์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด๋๊ฒ ๋์ฃ . ํ์ง๋ง ํ์
์ฐฝ ๋ด๋ถ์ ์ฝํ
์ธ (๋ฒํผ, ์
๋ ฅ์ฐฝ ๋ฑ)๋ฅผ ํด๋ฆญํ์ ๋๋ ์ด๋ฒคํธ๊ฐ ๋ฒ๋ธ๋ง๋์ด ๋ฐฐ๊ฒฝ <div>์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ์คํ๋๋ค๋ฉด, ์ฌ์ฉ์๋ ์ฝํ
์ธ ์ ์ํธ์์ฉํ๋ ค ํ ๋๋ง๋ค ํ์
์ด ๋ซํ๋ ๋ถํธ์ ๊ฒช๊ฒ ๋ ๊ฒ์
๋๋ค.
๋ ๋ค๋ฅธ ์๋ก, ํด๋ฆญ ๊ฐ๋ฅํ ์นด๋ ๋ชฉ๋ก์ด ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ๊ฐ ์นด๋๋ฅผ ํด๋ฆญํ๋ฉด ์์ธ ํ์ด์ง๋ก ์ด๋ํ๊ณ , ์นด๋ ์์๋ โ์ญ์ โ ๋ฒํผ์ด ์์ต๋๋ค. ๋ง์ฝ โ์ญ์ โ ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ํ ๋ฒ๋ธ๋ง์ ๋ง์ง ์์ผ๋ฉด, ์ญ์ ์ด๋ฒคํธ๊ฐ ์คํ๋ ํ ๋ถ๋ชจ์ธ ์นด๋์ ํด๋ฆญ ์ด๋ฒคํธ๊น์ง ์คํ๋์ด ์์น ์๊ฒ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ์ ํดํ๋ฏ๋ก ๋ฐ๋์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋ฐฉ๋ฒ 1: event.stopPropagation()
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ๋ง๋ ๊ฐ์ฅ ์ง์ ์ ์ด๊ณ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ event.stopPropagation() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด ๋ฉ์๋๋ ํ์ฌ ์ด๋ฒคํธ ์ดํ์ ์์ ์์๋ก์ ์ด๋ฒคํธ ์ ํ๋ฅผ ์ค๋จ์ํต๋๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ event ๊ฐ์ฒด์์ stopPropagation()์ ํธ์ถํ๋ฉด, ํด๋น ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ์ ์์ ์ผ๋ก ์คํ๋์ง๋ง, ๊ทธ ์ด๋ฒคํธ๊ฐ ๋ถ๋ชจ ์์๋ก ์ ๋ฌ๋์ง๋ ์์ต๋๋ค.
์๋ ์ฝ๋๋ <span> ์์๋ฅผ ํด๋ฆญํ์ ๋, ๋ถ๋ชจ์ธ <div> ์์์ ํด๋ฆญ ์ด๋ฒคํธ๋ ์คํ๋์ง ์๋๋ก ๋ง๋ ์์ ์
๋๋ค.
// HTML ๊ตฌ์กฐ
// <div id="parent">
// <span id="child">์์ ์์ ํด๋ฆญ!</span>
// </div>
// ๋ถ๋ชจ div์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
$('div').click(function(){
alert('div๊ฐ ํด๋ฆญ๋์์ต๋๋ค.');
});
// ์์ span์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
$('span').click(function(e){
// ์ด๋ฒคํธ ์ ํ๋ฅผ ๋ง์ต๋๋ค.
e.stopPropagation();
alert('span์ด ํด๋ฆญ๋์์ต๋๋ค.');
});
์ ์์ ์์ <span> ์์๋ฅผ ํด๋ฆญํ๋ฉด "span์ด ํด๋ฆญ๋์์ต๋๋ค."๋ผ๋ ์๋ฆผ์ฐฝ๋ง ๋จ๊ณ , event.stopPropagation()์ ์ํด ์ด๋ฒคํธ ์ ํ๊ฐ ์ฐจ๋จ๋์ด "div๊ฐ ํด๋ฆญ๋์์ต๋๋ค."๋ผ๋ ์๋ฆผ์ฐฝ์ ๋ํ๋์ง ์์ต๋๋ค. ๋ง์ฝ e.stopPropagation() ์ฝ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๊ณ ์คํํ๋ฉด, span ์๋ฆผ์ฐฝ์ด ๋ฌ ํ div ์๋ฆผ์ฐฝ๋ ์ฐ์ด์ด ๋ํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 2: event.stopImmediatePropagation()
event.stopImmediatePropagation()์ stopPropagation()๋ณด๋ค ํ ๋จ๊ณ ๋ ๊ฐ๋ ฅํ ๋ฉ์๋์
๋๋ค. stopPropagation()์ด ์์ ์์๋ก์ ์ด๋ฒคํธ ์ ํ(๋ฒ๋ธ๋ง)๋ง ๋ง๋๋ค๋ฉด, stopImmediatePropagation()์ ๊ฐ์ ์์์ ํ ๋น๋ ๋ค๋ฅธ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์คํ๊น์ง๋ ๋ง์ต๋๋ค.
ํ๋์ ์์์ ์ฌ๋ฌ ๊ฐ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฐ์ธ๋ฉ๋์ด ์๋ ํน๋ณํ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
$('#myButton').on('click', function(e) {
alert('์ฒซ ๋ฒ์งธ ํธ๋ค๋ฌ ์คํ!');
// ๋์ผ ์์์ ๋ค๋ฅธ ํธ๋ค๋ฌ ์คํ ๋ฐ ๋ฒ๋ธ๋ง์ ๋ชจ๋ ์ค๋จํฉ๋๋ค.
e.stopImmediatePropagation();
});
$('#myButton').on('click', function(e) {
// ์ด ํธ๋ค๋ฌ๋ ์ ๋ ์คํ๋์ง ์์ต๋๋ค.
alert('๋ ๋ฒ์งธ ํธ๋ค๋ฌ ์คํ!');
});
$('#parentDiv').on('click', function(e) {
// ์ด ํธ๋ค๋ฌ ์ญ์ ๋ฒ๋ธ๋ง์ด ์ฐจ๋จ๋์ด ์คํ๋์ง ์์ต๋๋ค.
alert('๋ถ๋ชจ Div ํธ๋ค๋ฌ ์คํ!');
});
์ ์ฝ๋์์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด โ์ฒซ ๋ฒ์งธ ํธ๋ค๋ฌ ์คํ!โ ์๋ฆผ์ฐฝ๋ง ๋ํ๋ฉ๋๋ค. stopImmediatePropagation()์ด ํธ์ถ๋์๊ธฐ ๋๋ฌธ์, ๊ฐ์ ๋ฒํผ์ ์ฐ๊ฒฐ๋ ๋ ๋ฒ์งธ ํธ๋ค๋ฌ์ ๋ถ๋ชจ div์ ํธ๋ค๋ฌ๋ ๋ชจ๋ ์คํ๋์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ํฉ์์๋ stopPropagation()์ผ๋ก ์ถฉ๋ถํ์ง๋ง, ์ด์ฒ๋ผ ๋ณต์กํ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ ๊ตฌ์กฐ์์๋ stopImmediatePropagation()์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 3: ์กฐ๊ฑด๋ถ ํ์ธ (event.target)
๋๋ก๋ ์ด๋ฒคํธ ์ ํ๋ฅผ ๋ฌด์กฐ๊ฑด ๋ง๊ธฐ๋ณด๋ค, ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ง์ ์ ํ์ธํ์ฌ ์กฐ๊ฑด๋ถ๋ก ํธ๋ค๋ฌ๋ฅผ ์คํํ๋ ๊ฒ์ด ๋ ๋์ ํด๊ฒฐ์ฑ
์ผ ์ ์์ต๋๋ค. event.target ์์ฑ์ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ๊ฐ ์ต์ด๋ก ๋ฐ์ํ ์์๋ฅผ ์ ์ ์์ต๋๋ค.
๋ถ๋ชจ ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ด์์ event.target์ ํ์ธํ์ฌ, ํน์ ์์ ์์์์ ๋ฐ์ํ ์ด๋ฒคํธ์ผ ๊ฒฝ์ฐ ๋์์ ๊ฑด๋๋ฐ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.
// HTML ๊ตฌ์กฐ
// <div id="myDiv">
// ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
// <a href="#" id="myLink">์ด ๋งํฌ๋ ํด๋ฆญํ์ง ๋ง์ธ์.</a>
// </div>
$("#myDiv").click(function(event) {
// ์ด๋ฒคํธ ๋ฐ์์ง๊ฐ <a> ํ๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ํธ๋ค๋ฌ๋ฅผ ์คํํฉ๋๋ค.
if (!$(event.target).is("a")) {
alert('Div๊ฐ ํด๋ฆญ๋์์ต๋๋ค (๋งํฌ ์ ์ธ).');
// ๊ธฐ์กด ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ก์ง
}
});
$("#myLink").click(function() {
alert("๋งํฌ๊ฐ ํด๋ฆญ๋์์ต๋๋ค!");
});
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด <a> ํ๊ทธ๋ฅผ ํด๋ฆญํ์ ๋๋ โ๋งํฌ๊ฐ ํด๋ฆญ๋์์ต๋๋ค!โ ์๋ฆผ๋ง ํ์๋๊ณ , <div>์ ๋ค๋ฅธ ๋ถ๋ถ์ ํด๋ฆญํ์ ๋๋ง โDiv๊ฐ ํด๋ฆญ๋์์ต๋๋ค (๋งํฌ ์ ์ธ).โ ์๋ฆผ์ด ํ์๋ฉ๋๋ค. stopPropagation()์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ถ๋ชจ ์์์์ ์์ ์์์ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ถํ์ฌ ์ฒ๋ฆฌํ ์ ์์ด ์ฝ๋๊ฐ ๋ ์ ์ฐํด์ง ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 4: .off()๋ก ์ด๋ฒคํธ ํด์ ํ๊ธฐ
off() ๋ฉ์๋๋ ์์์ ๋ฐ์ธ๋ฉ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ๋ ์ญํ ์ ํฉ๋๋ค. ๋๋ก๋ ์ด๋ฒคํธ๊ฐ ์ค๋ณต์ผ๋ก ๋ฐ์ธ๋ฉ๋์ด ์ฌ๋ฌ ๋ฒ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์๋๋ฐ, ์ด๋ ๋ฒ๋ธ๋ง ๋ฌธ์ ๋ผ๊ธฐ๋ณด๋ค๋ ๋์ผํ ์ด๋ฒคํธ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฑ๋ก๋ ๊ฒฝ์ฐ์
๋๋ค.
์ด๋ฐ ์ํฉ์์๋ ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ธฐ ์ ์ .off()๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด์ ์๋ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๊ณ , ๊ทธ ๋ค์์ .on()์ผ๋ก ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
// ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ธฐ ์ ์ ๊ธฐ์กด 'click' ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค.
$(element).off('click').on('click', function () {
// ์ฌ๊ธฐ์ ์คํํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
});
์ด ๋ฐฉ๋ฒ์ ๋์ ์ผ๋ก ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋๋ ํ์ด์ง์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋์น ์๊ฒ ์ค๋ณต์ผ๋ก ์์ด๋ ๊ฒ์ ๋ฐฉ์งํ ๋ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ์ด๋ ๋ฒ๋ธ๋ง์ ๋ง๋ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด๋ผ๊ธฐ๋ณด๋ค๋, ์ด๋ฒคํธ ์ค๋ณต ์คํ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋ ์ ํฉํ ์ ๊ทผ๋ฒ์ด๋ผ๋ ์ ์ ๊ธฐ์ตํด์ฃผ์ธ์.
๋ ๋์ ์ด๋ฒคํธ ๊ด๋ฆฌ๋ฅผ ์ํ์ฌ
์ง๊ธ๊น์ง jQuery์์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ๋ฐฉ์งํ๋ ๋ค ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๊ณ ์ ํ ์ฌ์ฉ ์ฌ๋ก์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
event.stopPropagation(): ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฒ๋ธ๋ง ์ฐจ๋จ ๋ฐฉ๋ฒ์ ๋๋ค.event.stopImmediatePropagation(): ๊ฐ์ ์์์ ๋ค๋ฅธ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊น์ง ์ค๋จ์์ผ์ผ ํ ๋ ์ฌ์ฉํฉ๋๋ค.- ์กฐ๊ฑด๋ถ ํ์ธ: ์ด๋ฒคํธ ๋ฐ์ ์์๋ฅผ ํ์ธํ์ฌ ์ ์ฐํ๊ฒ ๋ก์ง์ ์ ์ดํ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.
.off(): ์ด๋ฒคํธ ์ค๋ณต ๋ฐ์ธ๋ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ํจ๊ณผ์ ์ ๋๋ค.
์ํฉ์ ๋ง๋ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํ์ฌ ์ด๋ฒคํธ ํ๋ฆ์ ๋ช ํํ๊ฒ ์ ์ดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์ด๋ฒคํธ ๊ด๋ฆฌ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์๊ฐ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋๋ ์ฒซ๊ฑธ์์ ๋๋ค. ์ด ๊ธ์ด ์ฌ๋ฌ๋ถ์ jQuery ๊ฐ๋ฐ ์ฌ์ ์ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!