๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ผ์ง€ ๐Ÿ‘ฉ‍๐Ÿ’ป

addEventListener์˜ ์„ธ ๋ฒˆ์งธ ์ธ์ž, true vs false ์ฐจ์ด์ ! (์บก์ฒ˜๋ง vs ๋ฒ„๋ธ”๋ง ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ)

by chuyj15 2025. 8. 1.
728x90
๋ฐ˜์‘ํ˜•
SMALL

 

์›น ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ด๋ฒคํŠธ ๊ฑธ ๋•Œ ์ด๋ ‡๊ฒŒ ์“ฐ๋Š” ์ฝ”๋“œ ๋งŽ์ด ๋ณด์…จ์ฃ ?

element.addEventListener('click', handler, true);


๊ทผ๋ฐ ๋งˆ์ง€๋ง‰ true๋Š” ๋„๋Œ€์ฒด ๋ญ˜๊นŒ์š”?
์ด๊ฒŒ ๋ฐ”๋กœ "์บก์ฒ˜๋ง"์ด๋ƒ "๋ฒ„๋ธ”๋ง"์ด๋ƒ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ์ด์—์š”!
์ง„์งœ ์‰ฝ๊ฒŒ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š” ๐Ÿ˜Ž

 

2025.08.01 - [๊ฐœ๋ฐœ ์ผ์ง€ ๐Ÿ‘ฉ‍๐Ÿ’ป] - ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง(Capturing)๊ณผ ๋ฒ„๋ธ”๋ง(Bubbling) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

 

์ด๋ฒคํŠธ ์บก์ฒ˜๋ง(Capturing)๊ณผ ๋ฒ„๋ธ”๋ง(Bubbling) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

์›น์—์„œ ๋ฒ„ํŠผ ๊ฐ™์€ ๊ฑธ ํด๋ฆญํ•˜๋ฉด, ๊ทธ ์ด๋ฒคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋ ๊นŒ์š”?๋ฐ”๋กœ! "์ด๋ฒคํŠธ ์ „ํŒŒ(Event Propagation)"๋ผ๋Š” ๊ณผ์ •์ด ์žˆ์–ด์š” ๐Ÿงญ์—ฌ๊ธฐ์—” ๋‘ ๊ฐ€์ง€ ํ๋ฆ„์ด ์žˆ์–ด์š”: ๐ŸŽˆ 1. ์บก์ฒ˜๋ง(Capturing)์ด๋ž€?๐Ÿ‘‰ ์ด๋ฒคํŠธ๊ฐ€

chuyj15.tistory.com

 

โœ… addEventListener ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

element.addEventListener('์ด๋ฒคํŠธ์ด๋ฆ„', ์‹คํ–‰ํ•จ์ˆ˜, useCapture);


๋งˆ์ง€๋ง‰ useCapture ์ž๋ฆฌ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค!

true ๐Ÿ‘‰ ์บก์ฒ˜๋ง ๋‹จ๊ณ„์—์„œ ์‹คํ–‰

false ๐Ÿ‘‰ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ์‹คํ–‰ (๊ธฐ๋ณธ๊ฐ’)

โœ… ์ด๋ฒคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ „ํŒŒ๋ ๊นŒ?
์ด๋ฒคํŠธ๋Š” ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜ 3๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์š”:

์บก์ฒ˜๋ง ๋‹จ๊ณ„
๐Ÿ‘‰ document๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ↓ ๋‚ด๋ ค์˜ด

ํƒ€๊นƒ ๋‹จ๊ณ„
๐Ÿ‘‰ ์‹ค์ œ ํด๋ฆญ๋œ ๊ทธ ์š”์†Œ

๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„
๐Ÿ‘‰ ํด๋ฆญ๋œ ์š”์†Œ์—์„œ ์œ„๋กœ ↑ ์˜ฌ๋ผ๊ฐ

โœ… true vs false ์˜ˆ์‹œ

<div id="parent">
  <button id="child">ํด๋ฆญ</button>
</div>
// ์บก์ฒ˜๋ง ๋‹จ๊ณ„
document.getElementById('parent').addEventListener('click', function() {
  console.log('๋ถ€๋ชจ');
}, true);

// ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„
document.getElementById('child').addEventListener('click', function() {
  console.log('์ž์‹');
}, false); // ๊ธฐ๋ณธ๊ฐ’




์ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ฝ˜์†”์—” ์ด๋ ‡๊ฒŒ ์ฐํ˜€์š”:

 

๋ถ€๋ชจ
์ž์‹


์™œ?

๋จผ์ € ์บก์ฒ˜๋ง ๋‹จ๊ณ„๋‹ˆ๊นŒ ๋ถ€๋ชจ(true)๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ ,

๊ทธ ๋‹ค์Œ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ์ž์‹(false)์ด ์‹คํ–‰๋˜๋‹ˆ๊นŒ์š”!

โœ… ์ง„์งœ ํ—ท๊ฐˆ๋ฆด ๋•?
ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ ์•„๋‹ˆ๋ฉด ๋Œ€๋ถ€๋ถ„ false๋กœ ์จ์š”!

์บก์ฒ˜๋ง(true)์€ ์ด๋ฒคํŠธ ์šฐ์„  ์ œ์–ด๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์จ์š”.

๐ŸŽฏ ์ •๋ฆฌ ํ•œ ์ค„ ์š”์•ฝ
true๋Š” ์บก์ฒ˜๋ง, false๋Š” ๋ฒ„๋ธ”๋ง์ด์—์š”!
์ด๋ฒคํŠธ๊ฐ€ ๋‚ด๋ ค๊ฐˆ ๋•Œ ์‹คํ–‰ํ• ์ง€, ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์‹คํ–‰ํ• ์ง€ ์ฐจ์ด!


#์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ #์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ #๋ฒ„๋ธ”๋ง #์บก์ฒ˜๋ง #addEventListener #์›น๊ฐœ๋ฐœํŒ #ํ”„๋ก ํŠธ์—”๋“œ๊ธฐ์ดˆ #๊ฐœ๋ฐœ๊ณต๋ถ€ #์ฝ”๋”ฉ๊ธฐ์ดˆ #JS์ด๋ฒคํŠธ

728x90
๋ฐ˜์‘ํ˜•
LIST