Javascript

javascript (Vanilla JS) - jQuery ์ง€์–‘ํ•˜๊ธฐ

ddon 2021. 7. 27. 23:16

Vanlia javascript๋ž€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์“ฐ์ง€ ์•Š์€ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋‹ˆ ์†๋„๋„ ๋‹น์—ฐ ๋น ๋ฅด๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์–ด์„œ ๋””๋ฒ„๊น…ํ• ๋•Œ๋„ ํŽธํ•˜๋‹ค.

์ฒ˜์Œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ฐ”๋กœ ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒŒ ์ œ์ผ ์ต์ˆ™ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ช‡๋…„ ์ „๋ถ€ํ„ฐ ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์ง€์–‘ํ•˜์ž๋Š” ๊ธ€์„ ๋งŽ์ด ๋ดค๋Š”๋ฐ ์—…๋ฌด์ ์œผ๋กœ๋Š” ์•„์ง ์“ฐ๊ธฐ๋•Œ๋ฌธ์— ๋†“์ง€ ๋ชปํ–ˆ๋‹คใ… ใ… 

์ด๋ฒˆ์— ๊ฐœ์ธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ์ œ์ด์ฟผ๋ฆฌ๋กœ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ณ  ๋ฐ”๋‹๋ผjs๋กœ ๋ฐ”๊พธ๋Š”๊ฑธ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ.. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ”๋‹๋ผjs๋กœ ํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค๊ณ  ํŒ๋‹จ์ด ๋˜์–ด์„œ ์‹œ์ž‘ํ•ด๋ดค๋‹ค!

์ œ์ด์ฟผ๋ฆฌ๋Š” ์…€๋ ‰ํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ํŽธํ–ˆ์–ด์„œ ์ฒ˜์Œ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, document.querySelector~ ๋ฅผ ์“ฐ๋Š”๊ฒŒ ์ ์‘์ด ์•ˆ๋๋‹ค.
๊ทธ๋ฆฌ๊ณ  click์ด๋ฒคํŠธ ์ค„๋•Œ๋„ addEventListener()๋ฅผ ์“ฐ๋Š”๊ฑฐ๋ž‘.. querySelectorAll์—์„œ click์ด๋ฒคํŠธ ์ค„๋•Œ ์ œ์ด์ฟผ๋ฆฌ๋ž‘์€ ๋‹ค๋ฅด๊ฒŒ nodeList๋กœ ๋ฐ˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ์ด๋‚˜ foreach๋ฌธ์œผ๋กœ ๋Œ๋ ค์•ผํ•˜๋Š”๊ฑฐ๋„ ๊ท€์ฐฎ์•˜๋‹ค.
์ œ์ด์ฟผ๋ฆฌ๋กœ ํ•œ์ค„์— ๋๋‚˜๋Š”๊ฑธ ๋‘์ค„์ด์ƒ ์“ฐ๊ฒŒ๋˜๋Š”๊ฒŒ ์ซŒ ๊ท€์ฐฎ์•˜์ง€๋งŒ ํ•˜๋‹ค๋ณด๋ฉด ์ ์‘์ด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ์— js๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ "addeventlistener is not a function" ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋– ์„œ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ, window.onload ์•ˆ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์œผ๋ผํ•ด์„œ ์ด๊ฑด ํ•ด๊ฒฐ๋๋‹ค. body ํƒœ๊ทธ์•ˆ์—์„œ ๋งจ ๋ฐ‘์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ถ€๋ฅด๋ฉด dom์ƒ์„ฑํ•˜๊ณ  ๊ทธ๋‹ค์Œ์— ์ซŒ ๋Šฆ๊ฒŒ ๋ถˆ๋Ÿฌ์ง€๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€?.. ๋ญ๊ฐ€ ๋ฌธ์  ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค! ์ผ๋‹จ์€ ์ด๋ ‡๊ฒŒ ํ•ด๊ฒฐ๋์œผ๋‹ˆ ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.

 

Vanila JS vs jQuery

// jQuery
const test = $('.test-class');
// javascript
const test = document.querySelector('.test-class');

// jQuery
test.addClass('add-class');
test.removeClass('add-class');
// javascript
test.classList.add('add-class');
test.classList.remove('add-class');

// jQuery
const testList = $('.test-class');
testList.click(function(){
	console.log('test');
});
// javascript
const testList = document.querySelectorAll('.test-class');
for( const test of testList ){
	inputNumber.addEventListener('keyup', function(){
		console.log('click test');
	});
}


์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์ง€์–‘ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ”๋‹๋ผjs๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆœ์ˆ˜js๋กœ๋งŒ ์ž‘์„ฑ์„ ํ•ด๋ณด๊ณ ์‹ถ์—ˆ๊ณ  ์š”์ฆ˜ ํšŒ์‚ฌ ์ฑ„์šฉ๊ณต๊ณ  ๋ฅผ ๋ณด๋ฉด ์ œ์ด์ฟผ๋ฆฌ๊ฐ€ ๋ณ„๋กœ ์—†์–ด์„œ ๊ทธ ์ถ”์„ธ๋ฅผ ๋”ฐ๋ฅด๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์›Œ๋‚™ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋‹ค๋ณด๋‹ˆ, ํ›จ์”ฌ ๋น ๋ฅด๋‹ค๋ผ๋Š”๊ฑธ ๋ชป๋Š๊ผˆ์–ด์„œ ์•„์‰ฝ๊ธด ํ•˜์ง€๋งŒ.. ์ œ์ด์ฟผ๋ฆฌ๋กœ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ํ•œ๋‹ค์Œ์— ๋ฐ”๋‹๋ผjs๋กœ ๋ฐ”๊ฟ”๋ณผ๊ป„ ๊ทธ๋žฌ๋‚˜.. ๋‚˜์ค‘์— ํ”„๋กœ์ ํŠธ ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•ด๋ด์•ผ๊ฒ ๋‹ค!