jQuery -
๊ทธ๋ฌ๋ ์ต๊ทผ ๋ช ๋
๋์ ์น ๊ฐ๋ฐ์ ์ํ ์ต๊ณ ์ ๋๊ตฌ๋ก์์ ์ง์๊ฐ ์ฝํ๋์์ต๋๋ค. jQuery๊ฐ ์ ์ธ๊ธฐ๋ฅผ ์ป์๋์ง, ์ ์ ํ์์ ๋ค์ณ์ก๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒฝ์ฐ์ ์ต์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋๋ ๋ฐ jQuery๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
jQuery์ ๊ฐ๋ตํ ์ญ์ฌ
์กด ๋ ์๊ทธ(
jQuery๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฝ๋ฉ์ด ์ฌ๋ฏธ์์ด์ผ ํ๋ค๋ ๋ชจํ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. jQuery๋ ์ผ๋ฐ์ ์ด๊ณ ๋ฐ๋ณต์ ์ธ ์์ ์ ์ํํ๊ณ ๋ถํ์ํ ๋งํฌ์ ์ ๋ชจ๋ ์ ๊ฑฐํ์ฌ ์งง๊ณ ์ฐ์ํ๋ฉฐ ๊น๋ํ๊ฒ ๋ง๋ญ๋๋ค.
jQuery์๋ ๋ ๊ฐ์ง ์ฃผ์ ์ฅ์ ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์น ํ์ด์ง๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ํธ๋ฆฌํ API์ ๋๋ค. ํนํ ์์๋ฅผ ์ ํํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ID๋ ํด๋์ค๋ณ๋ก ์ ํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์์์์ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋ฅผ ์ ํํ๋ ๋ฑ ๋ณต์กํ ํํ์์ ์์ฑํ ์ ์์ต๋๋ค.
// Select every item within the list of people within the contacts element
$('#contacts ul.people li');
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ํ ๋ฉ์ปค๋์ฆ์ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฐ์ ํ์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋ฒ์งธ ์ฅ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ฐจ์ด์ ์ ์ถ์ํํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ ๋น์์๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์์ ์ ์ผ๋ก ์๋ํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค.
ํ์คํ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ ๊ฐ์ ์๋ง์ ์ฐจ์ด์ ์ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค. ๋ณด์ธ์
// If Mozilla is used
if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {
// Use the handy event callback
jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );
// If IE is used, use the excellent hack by Matthias Miller
// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
} else if ( jQuery.browser == "msie" ) {
// Only works if you document.write() it
document.write("<scr" + "ipt id=__ie_init defer=true " +
"src=javascript:void(0)></script>");
// Use the defer script hack
var script = document.getElementById("__ie_init");
script.onreadystatechange = function() {
if ( this.readyState == "complete" )
jQuery.ready();
};
// Clear from memory
script = null;
// If Safari is used
} else if ( jQuery.browser == "safari" ) {
// Continually check to see if the document.readyState is valid
jQuery.safariTimer = setInterval(function(){
// loaded and complete are both valid states
if ( document.readyState == "loaded" ||
document.readyState == "complete" ) {
// If either one are found, remove the timer
clearInterval( jQuery.safariTimer );
jQuery.safariTimer = null;
// and execute any waiting functions
jQuery.ready();
}
}, 10);
}
๊ทธ๋ฆฌ๊ณ jQuery ๋๋ถ์ ๊ฐ๋ฐ์๋ ์ด๋ฌํ ๋ชจ๋ ํจ์ ์ ๋ํ ๊ฑฑ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ํ์ ์ฑ ์์ผ๋ก ๋๋ฆด ์ ์์์ต๋๋ค.
๋์ค์ jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๋ฉ์ด์
๋ฐ Ajax์ ๊ฐ์ ๋ณด๋ค ๋ณต์กํ ๊ธฐ์ ์ ๋ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ค์ ์น์ฌ์ดํธ์ ํ์ค ์ข
์์ฑ์ด ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋๋ ๊ทธ๊ฒ์ ์ธํฐ๋ท์ ์์ฒญ๋ ๋ถ๋ถ์ ์ฐจ์งํ๊ณ ์์ต๋๋ค. W3Techs๋ ์ด๋ ๊ฒ ๋ฏฟ์ต๋๋ค.
jQuery ๊ฐ๋ฐ์ ๋ํ ํต์ ๋ ๋์ฑ ๊ณต์ํ๋์์ต๋๋ค. 2011๋
์ ํ
2015๋
์ jQuery ์ฌ๋จ์ Dojo ์ฌ๋จ๊ณผ ํฉ๋ณ๋์์ต๋๋ค.
๋ณํํ๋ ์ํฉ
๊ทธ๋ฌ๋ ์ต๊ทผ์๋ jQuery
ะัะฐัะทะตัั
์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ธํด ๋ธ๋ผ์ฐ์ ์ ์ฐจ์ด์ ๊ณผ ์ ํ ์ฌํญ์ด ๋ ์ค์ํด์ก์ต๋๋ค. ์ฒซ์งธ, ํ์คํ๊ฐ ํฅ์๋์์ต๋๋ค. ์ฃผ์ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์(Apple, Google, Microsoft ๋ฐ Mozilla)๊ฐ ํ๋ ฅํ์ฌ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์ฌ๋ฌ ๊ฐ์ง ์ค์ํ ๋ฉด์์ ์ฌ์ ํ ์๋ก ๋ค๋ฅด์ง๋ง ๊ณต๊ธ์
์ฒด๋ ์ ์ด๋ ๋ธ๋ผ์ฐ์ ๋์ ๊ณตํต ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฒ์ํ๊ณ ์์ฑํ ์ ์๋ ์๋จ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
// jQuery
$.getJSON('https://api.com/songs.json')
.done(function (songs) {
console.log(songs);
})
// native
fetch('https://api.com/songs.json')
.then(function (response) {
return response.json();
})
.then(function (songs) {
console.log(songs);
});
๋ฐฉ๋ฒ
// jQuery
const fooDivs = $('.foo div');
// native
const fooDivs = document.querySelectorAll('.foo div');
์ด์ ๋ค์์ ์ฌ์ฉํ์ฌ ์์ ํด๋์ค๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.
// jQuery
$('#warning').toggleClass('visible');
// native
document.querySelector('#warning').classList.toggle('visible');
์ฌ์ดํธ
๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ์ด์ง ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค. ๋ง์
๋ ๋ฒ์งธ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์
๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋๋ถ๋ถ์ด ์ฌ์ฉํ๋
์ด๋ ์๋ก์ด ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ด ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ๋๊ณ ๊ฐ๋ฐ์๊ฐ ์ ์ ๋ฒ์ ์ด ์ถ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์์ ์๋ฏธํฉ๋๋ค.
์ธ ๋ฒ์งธ ์ด์ ๋ Internet Explorer๊ฐ ์ ํ ๋ฌด๊ดํ ์ํ์ ๊ฐ๊น์์ง๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. IE๋ ์ค๋ซ๋์ ์ ์ธ๊ณ ์น ๊ฐ๋ฐ์ ๊ณจ์นซ๊ฑฐ๋ฆฌ์์ต๋๋ค. ๋ฒ๊ทธ๋ ๋๋ฆฌ ํผ์ ธ ์์์ผ๋ฉฐ IE๋ 2000๋ ๋๋ฅผ ์ง๋ฐฐํ๊ณ ์ง์์ ์ธ ์ ๋ฐ์ดํธ ์ ๋ต์ ์ฌ์ฉํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ์ด ์ฌ์ ํ ์ผ๋ฐ์ ์ ๋๋ค.
2016๋
๋ง์ดํฌ๋ก์ํํธ๋ IE ํ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ ,
jQuery์กฐ์ฐจ๋ IE 8 ์ดํ ์ง์์ ์ค๋จํ์ต๋๋ค.
์๋ก์ด ํ๋ ์์ํฌ
jQuery์ ์ถํ ์ดํ ์ต์ ๋ฆฌ๋๋ฅผ ํฌํจํ์ฌ ๋ง์ ํ๋ ์์ํฌ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค.
์ฒซ์งธ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑ ์์๋ก ์ฝ๊ฒ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ ์์ํฌ๋ ํ์ด์ง ๋ ๋๋ง ๋ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ jQuery๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ์๋ง ์ฌ์ฉ๋๋ฉฐ ์ด๊ธฐ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ ์์ ์ ์๋ฒ์ ๋งก๊น๋๋ค.
๋ฐ๋ฉด์ React, Angular ๋ฐ Vue ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ฉด HTML, ์ฝ๋, ์ฌ์ง์ด CSS๊น์ง ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์์ฒด ํฌํจ๋ ์ฌ๋ฌ ํจ์์ ํด๋์ค๋ก ๋๋๋ ๊ฒ์ฒ๋ผ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ก ๋๋๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์ฌ์ดํธ๋ฅผ ๋ ์ฝ๊ฒ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ ์ฅ์ ์ ์ต์ ํ๋ ์์ํฌ๊ฐ ๊ฐ๋ฐ์๊ฐ ์ธํฐํ์ด์ค์ ๋ชจ์์ ์ค๋ช ํ๊ณ ์ํ๋ ๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์์ ์ ํ๋ ์์ํฌ์ ๋งก๊ธฐ๋ ์ ์ธ์ ํจ๋ฌ๋ค์์ ๊ณ ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ jQuery ์ฝ๋๋ฅผ ํน์ง์ง๋ ๋ช ๋ นํ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ฐ๋๋ฉ๋๋ค.
jQuery์์๋ ๋ณ๊ฒฝ ์์ ์ ์ํํ๋ ๋จ๊ณ๋ฅผ ๋ช ์์ ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ธ์ ํ๋ ์์ํฌ์์๋ "์ด ๋ฐ์ดํฐ์ ๋ฐ๋ฅด๋ฉด ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค."๋ผ๊ณ ๋งํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฒ๊ทธ ์๋ ์ฝ๋๋ฅผ ํจ์ฌ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ค์ ์น ์ฌ์ดํธ ๊ฐ๋ฐ์ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ์ผ๋ฉฐ, ์ด๋ก ์ธํด jQuery์ ์ธ๊ธฐ๊ฐ ๊ฐ์ํ์ต๋๋ค.
jQuery๋ ์ธ์ ์ฌ์ฉํ๋๊ฐ?
๊ทธ๋ ๊ฒ ํ ๋ ํด์ผ jQuery๋ฅผ ์ฌ์ฉ ํ์๊ฒ ์ต๋๊น?
ํ๋ก์ ํธ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ฉด ๋ณต์ก์ฑ์ ์๋ฏธ ์๊ฒ ๊ด๋ฆฌํ ์ ์๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ก ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑ ์์๋ก ๋๋๋๋ค. ์ด๋ฌํ ์ฌ์ดํธ์์ jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์์๋ ๊ด์ฐฎ์ ๋ณด์ผ ์ ์์ง๋ง ์ด๋ ์กฐ๊ฐ์ด ํ์ด์ง์ ์ด๋ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น๋์ง ํ์ ํ ์ ์๋ ์คํ๊ฒํฐ ์ฝ๋๋ก ๋น ๋ฅด๊ฒ ์ด์ด์ง ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๋ฐ ์ํฉ์ ์ฒํด ์์๊ธฐ ๋๋ฌธ์ ๋ณํ๋ฅผ ์๋ํ ๋ ์ด๋ ค์ด ์ผ์ฒ๋ผ ๋๊ปด์ก์ต๋๋ค. jQuery ์ ํ๊ธฐ๋ ์๋ฒ์์ ์์ฑ๋ HTML ๊ตฌ์กฐ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ฒ๋ ๊นจ์ง์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ ์ ์์ต๋๋ค.
๊ทธ ๋ฐ๋ํธ์๋ ์ฝ๊ฐ์ ์ํธ์์ฉ์ฑ์ด๋ ๋์ ์ฝํ ์ธ ๋ง ํ์ํ ๋จ์ํ ์ฌ์ดํธ๊ฐ ์์ต๋๋ค. ๋ค์ดํฐ๋ธ API๋ก ํ ์ ์๋ ์ผ์ด ํจ์ฌ ๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก jQuery๋ฅผ ์ฌ์ฉํ์ง๋ ์์ต๋๋ค.
๋ ๊ฐ๋ ฅํ ๊ฒ์ด ํ์ํ๋๋ผ๋ ์ ๋ฌธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ๊ฒ์
๋๋ค.
jQuery๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ข์ ์ด์ ๋ ๊ทธ๊ฒ์ด ์น ์ฌ์ดํธ์ ํ๋ฐํธ ์๋์ ๋ํ ํฌ๊ด์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ค์ํ ๊ธฐ๋ณธ API๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐ์ฐ๋ ๋์ jQuery ๋ฌธ์๋ง ์ฝ๊ณ ์ฆ์ ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋ช ๋ นํ ์ ๊ทผ ๋ฐฉ์์ ํ์ฅ์ฑ์ด ์ข์ง ์์ง๋ง ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์๋ณด๋ค ๋ฐฐ์ฐ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๊ธฐ๋ฅ์ด ๋ช ํํ๊ฒ ์ ํ๋ ์ฌ์ดํธ์ ๊ฒฝ์ฐ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์ฐจ๋ถํ๊ฒ ์์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ณต์กํ ์ด์ ๋ธ๋ฆฌ๋ ์ปดํ์ผ์ด ํ์ํ์ง ์์ต๋๋ค.
๋ํ ์ฌ์ดํธ๊ฐ ์๊ฐ์ด ์ง๋๋ ๋ณต์กํด์ง์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๊ณ jQuery๋ณด๋ค ๋ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๊ด์ฌ์ด ์๋ค๋ฉด jQuery๊ฐ ์ข์ต๋๋ค.
์ด์ ๋ฒ์ ์ IE๋ฅผ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด jQuery๋ IE๊ฐ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ธ๋ผ์ฐ์ ์๋ ์์ ์ฒ๋ผ ์ฌ๋ฌ๋ถ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
Prospection
jQuery๋ ์กฐ๋ง๊ฐ ์ฌ๋ผ์ง์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋
jQuery์ ๊ธฐ๋ฅ์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋์ง ์๋ ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ํฅํ ๋ช ๋ ๋์ ๊ณ์ ๋๋ฆฌ์ง๋ง ๊พธ์คํ ๊ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ก์ด ์น ์ฌ์ดํธ๋ ์ฒ์๋ถํฐ ๋ณด๋ค ํ๋์ ์ธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋๋ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ jQuery์ ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก๋ ์ ์ ๋ ๋๋ฌผ์ด์ง๊ณ ์์ต๋๋ค.
์ด๋ค ์ฌ๋๋ค์ ์น ๊ฐ๋ฐ ๋๊ตฌ๊ฐ ์ธ๋ชจ์์ด์ง๋ ์๋๋ฅผ ์ข์ํ์ง ์์ง๋ง, ๋์๊ฒ ๊ทธ๊ฒ์ ๋น ๋ฅธ ๋ฐ์ ์ ์ฆ๊ฑฐ์
๋๋ค. jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ ์ผ์ ๋ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋
์ ํ๊ณ์๋ค๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
์ถ์ฒ : habr.com