# * DOM Event Handle

Written by ๐Ÿ“ Juunone

Web API Event์˜ stopPropagation, preventDefault Methods์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ ์ž ํ•œ๋‹ค.

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์ด๋ž€ ?

  • ์ž์‹์—์„œ ๋ฐœ์ƒ๋œ ์ด๋ฒคํŠธ๊ฐ€ ๋ถ€๋ชจ ๋…ธ๋“œ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ํ˜„์ƒ

์ด๋ฒคํŠธ ์บก์ฒ˜๋ง์ด๋ž€ ?

  • ๋ถ€๋ชจ์—์„œ ๋ฐœ์ƒ๋œ ์ด๋ฒคํŠธ๊ฐ€ ์ž์‹ ๋…ธ๋“œ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ํ˜„์ƒ

# event.stopPropagation

event.stopPropagation : ์ด๋ฒคํŠธ ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง์— ์žˆ์–ด ํ˜„์žฌ ์ด๋ฒคํŠธ ์ดํ›„์˜ ์ „ํŒŒ๋ฅผ ๋ง‰๋Š”๋‹ค.

browser_handle_click

์ถœ์ฒ˜ : Screencasts dot org Youtube

์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ a ํƒœ๊ทธ ํด๋ฆญ์‹œ ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š”, li, ul ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.
a click -> li click -> ul click ์ˆœ์œผ๋กœ ํ•ด๋‹น ๋…ธ๋“œ๋“ค์— ์ˆœ์ฐจ์ ์œผ๋กœ ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
์‚ฌ์šฉ์ž์˜ ์˜๋„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

i.e.

์˜๋„์น˜ ์•Š์€ ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ๋ง‰์•„์ฃผ๋Š”๊ฒŒ stopPropagation ์ด๋‹ค.

# event.preventDefault

event.preventDefault : ์ด๋ฒคํŠธ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด๋ฒคํŠธ์˜ ์ „ํŒŒ๋ฅผ ๋ง‰์ง€์•Š๊ณ  ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ทจ์†Œํ•œ๋‹ค.

preventDefault๋Š” ๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ๋ฅผ ์ž‘๋™ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” method ์ด๋‹ค.
<a>,<input>,<textarea> ์™€ ๊ฐ™์€ ํƒœ๊ทธ์˜ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

e.g.

a ํƒœ๊ทธ๋Š” ์ ์šฉ๋œ href ์†์„ฑ์„ ํ†ตํ•ด ์„ค์ •๋œ ๋งํฌ๋กœ ํŽ˜์ด์ง€ ์ด๋™์„ ํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
a ํƒœ๊ทธ ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ preventDefault ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ๋ง‰๋Š”๋‹ค.

# Reference

Last Updated: 7/5/2019, 8:38:55 AM