# ๐ EVENT
# ๐ง๐ผโ๐ Event๋ฅผ ์์์ผ ํ๋ ์ด์
โinput์ฐฝ์ ๊ฐ์ ์ ๋ ฅํ๊ณ , ์ํฐ๋ฅผ ์ณค์ ๋ ์งํ์ฒ ์ญ์ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด? โ์ญ์ ๋ฒํผ์ ๋๋ ์ ๋ ์งํ์ฒ ์ญ์ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด? โ์ธํฐ๋ ํฐ๋ธํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด?
์์ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๋ฐ๋์ ์ด๋ฒคํธ๋ฅผ ์์์ผํฉ๋๋ค.
๋์ ์ธ ์น์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ด ์ ๋์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ํธ์์ฉ์ ์ด๋ค ์ด๋ฒคํธ์ ์ํด ๋ฐ์ํฉ๋๋ค.
๊ทธ๋์ ํ๋ก ํธ์๋์์ ๋ง์ ์ธํฐ๋ ์
์ ๋ชจ๋ Event
๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ๊ณผ ๊น์ ๊ด๋ จ์ด ์์ต๋๋ค.
๊ทธ๋ผ Event
๋ผ๋ ์ฌ๊ฑด์ ๋ง๋๋ฌ ๊ฐ๋ณผ๊น์?
# ๐๐ปโโ๏ธ ์ด ๋ฌธ์๋ฅผ ๋ณด๊ณ ๋๋ฉด
- ์ด๋ฒคํธ ์ข ๋ฅ๋ฅผ ์ต์ 3๊ฐ์ง ์ด์ ๋งํ ์ ์๋ค.
- DOM Element์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ ์ ์๋ค.
- ์ด๋ฒคํธ์ ํ๋ฆ์ ์ ์ดํ ์ ์๋ค.
- ์ด๋ฒคํธ ์์์ ์ฌ์ฉํ ์ ์๋ค.
# ๐ ์ด๋ฒคํธ
์น์ ํ์ํ๋ ๋์ ๋ธ๋ผ์ฐ์ ๋ ์ฌ๋ฌ ์ข ๋ฅ์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์ด๋ฒคํธ(event)๋ ์ด๋ค ์ฌ๊ฑด์ ์๋ฏธํ๋๋ฐ์. ๋ธ๋ผ์ฐ์ ์์์ ์ฌ๊ฑด์ด๋ ์ฌ์ฉ์๊ฐ ํด๋ฆญ ํ์ '๋', ์คํฌ๋กค์ ํ์ '๋', ํ ์คํธ๋ฅผ ์ ๋ ฅํ์ '๋'์ ๊ฐ์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์ฌ์ฉ์๊ฐ ์งํ์ฒ ์ญ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ์ ๋ ฅํ์ '๋', ์ญ์ ๋ฒํผ์ ์ ๋ ฅํ์ '๋'์ ๊ฐ์ ์ด๋ฒคํธ๋ค์ ๋ค๋ฃฐ ์ ์์ด์ผํฉ๋๋ค.
# 1. ์ด๋ฒคํธ์ ์ข ๋ฅ
์ฌ์ฉ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ๋จผ์ , ์ด๋ฒคํธ์ ์ข ๋ฅ์ ๋ํด ์์์ผํฉ๋๋ค. ์ด ๊ธ์์๋ ๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ๋ค์ ๋ค๋ฃน๋๋ค.
<h2 class="font-size-20 mb-0 pb-0">1)์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ด๋ฒคํธ</h2>
์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)์ด๋ฒคํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ก๋ํ HTMLํ์ด์ง๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ด์ง๊ฐ ๋ก๋๋์๋ค๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ค์ ๋๋ค.
์ด๋ฒคํธ | ์ค๋ช |
---|---|
load | ์น ํ์ด์ง์ ๋ก๋๊ฐ ์๋ฃ๋์์ ๋ |
unload | ์น ํ์ด์ง๊ฐ unload ๋ ๋ (์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ) |
error | ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฅ๋ฅผ ๋ง๋ฌ๊ฑฐ๋ ์์ฒญํ ์์์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ |
resize | ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ ๋ |
scroll | ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์์๋๋ก ์คํฌ๋กค ํ ๋ |
<h2 class="font-size-20 mb-0 pb-0">2)ํค๋ณด๋ ์ด๋ฒคํธ</h2>
ํค๋ณด๋ ์ด๋ฒคํธ๋ ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ฅผ ์ด์ฉํ ๋ ๋ฐ์ํฉ๋๋ค.
keydown
์ด๋ keypress
์ด๋ฒคํธ์ ๋ํ event ๊ฐ์ฒด๋ ์ด๋ค ํค๊ฐ ๋๋ ธ๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ฒคํธ | ์ค๋ช |
---|---|
keydown | ์ฌ์ฉ์๊ฐ ํค๋ฅผ ์ฒ์ ๋๋ ์ ๋(ํค๊ฐ ๋๋ฆฐ ๋์์ ๊ณ์ํด์ ๋ฐ์) |
keyup | ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๋ ๋ |
keypress | ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๋๋ ๋ค๊ฐ ๋ผ์ด์ ๋ฌธ์๊ฐ ํ๋ฉด์ ๋ํ๋๊ฒ ๋๋ฉด ๋ฐ์ํ๋ค. ํ์ดํ ํค๋ฅผ ๋๋ฅผ ๋ keydown ์ด๋ฒคํธ๋ ๋ฐ์ํ์ง๋ง ์ด ์ด๋ฒคํธ๋ ๋ฐ์ํ์ง ์๋๋ค. ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๊ณ์ ๋๋ฅด๊ณ ์์ผ๋ฉด ์ด๋ฒคํธ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ค. |
<h2 class="font-size-20 mb-0 pb-0">3)๋ง์ฐ์ค ์ด๋ฒคํธ</h2>
๋ง์ฐ์ค ์ด๋ฒคํธ๋ ๋ง์ฐ์ค๋ฅผ ์์ง์ด๊ฑฐ๋ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ๋ฐ์ํฉ๋๋ค.
์ด๋ฒคํธ | ์ค๋ช |
---|---|
click | ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ์ ๋ |
dblclick | ๋ง์ฐ์ค๋ฅผ ๋๋ธ ํด๋ฆญํ์ ๋ |
mousedown | ๋ง์ฐ์ค๋ฅผ ๋๋ฅด๊ณ ์์ ๋ |
mouseup | ์์ ์์์ ๋๋ฅด๊ณ ์๋ ๋ง์ฐ์ค๋ฅผ ๋ ๋ |
mousemove | ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋(ํฐ์น์คํฌ๋ฆฐ์์๋ ๋์ํ์ง ์์) |
mouseover | ์์ ์๋ก ๋ง์ฐ์ค๋ฅผ ์์ง์์ ๋(ํฐ์น์คํฌ๋ฆฐ์์๋ ๋์ํ์ง ์์) |
mouseout | ์์ ๋ฐ๊นฅ์ผ๋ก ๋ง์ฐ์ค๋ฅผ ์์ง์์ ๋(ํฐ์น์คํฌ๋ฆฐ์์๋ ๋์ํ์ง ์์) |
<h2 class="font-size-20 mb-0 pb-0">4) ๐focus์ blur ์ด๋ฒคํธ</h2>
์ฌ์ฉ์๊ฐ ์ํธ์์ฉ์ ํ ์ ์๋ ๋งํฌ๋ ํผ ์์ ๊ฐ์ HTML ์์๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ์ด๋ฐ ์์๋ค์ ์์ ์ด ํฌ์ปค์ค๋ฅผ ๊ฐ๊ฑฐ๋ ์์ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด ์ด๋ฒคํธ๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ํผ์ ์์๋ค๊ณผ ์ํธ์ง์ฉ์ ํ ๋ ๋์๋ง์ด๋ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ(๋๋ถ๋ถ ๋์๋ง์ ์ค์ ์ฌ์ฉ์๊ฐ ์ํธ์ง์ฉ์ ํ๋ ์์๊ฐ ์๋ ๋ค๋ฅธ ์์๋ฅผ ํตํด ๋ณด์ฌ์ค๋ค.)
- ์ฌ์ฉ์๊ฐ (ํผ์ ์ ์ถํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ ) ์ด๋ ํ ์์์์ ๋ค๋ฅธ ์์๋ก ์ด๋ํ์ ๋ ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ์ํํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ
์ด๋ฒคํธ | ์ค๋ช |
---|---|
focus/focusin | ์์๊ฐ ํฌ์ปค์ค๋ฅผ ์ป์์ ๋ |
blur/focusout | ์์๊ฐ ํฌ์ปค์ค๋ฅผ ์์์ ๋ |
# 2. ์ด๋ฒคํธ ํธ๋ค๋ฌ
์ฌ์ฉ์๊ฐ ์น ํ์ด์ง์ HTML๊ณผ ์ํธ์์ฉํ ๋ ์ด๋ฒคํธ๋ฅผ ํธ๋ค๋งํ๋๋ก ํ๋ก๊ทธ๋๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ง ํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
- HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ.
- ์ ํต์ ์ธ DOM ์ด๋ฒคํธ ํธ๋ค๋ฌ
# 3. ์ด๋ฒคํธ ๋ฆฌ์ค๋(Event Listener)
๊ทธ๋ฌ๋ 1,2๋ฒ์ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ์ ์ฌ์ฉ๋์ง ์๊ณ , 3๋ฒ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธ์์๋ 3๋ฒ์งธ ๋ฐฉ๋ฒ๋ง ์๊ฐํฉ๋๋ค.
# ์ด๋ฒคํธ ๋ฆฌ์ค๋(Event Listener) ํ์ฉ
function onAddStationHandler() {
// ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ก์ง์ ๊ตฌํํ๋ค.
}
// ์งํ์ฒ ์ญ ์ถ๊ฐ ๋ฒํผ์ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค.
const $stationAddButton = document.querySelector("#station-add-btn");
// ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ onAddStationHandlerํจ์๊ฐ ์คํ๋๋๋ก ๋ฐ์ธ๋ฉ ํ๋ค.
$stationAddButton.addEventListener('click', onAddStationHandler);
click
: ๋๊ธฐํ๊ณ ์ ํ๋ ์ด๋ฒคํธ. ์ ์์ ์์๋ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.onAddStationHandler
:์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ๋ ์ฝ๋. ์์ ์์๋ onAddStationHandler() ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ ๊ดํธ๋ฅผ ์๋ตํ๋ ์ด์ ๋ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด (์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊ฐ ์๋๋ผ) ์ด๋ฒคํธ๊ฐ ๋ฐ์ธ๋ฉ ๋ ๋ ํจ์๋ฅผ ํธ์ถํ๋ผ๋ ์๋ฏธ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
# ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋ฆฌ์ค๋
์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ง์ ๋ ํจ์์ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ํจ์๋ ๋ฐ์ธ๋ฉ ๋๋ ์๊ฐ ์ฆ์ ์คํ๋ฉ๋๋ค. ์ฆ ํจ์๊ฐ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฐ๋ก ์คํ๋์ด, ์์น ์๋ ๋์์ ์ผ์ผํต๋๋ค. ๊ทธ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ ํํ์ ์ต๋ช ํจ์(anonymous function) (opens new window)๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
$stationAddButton.addEventListener('blur', function() {
// ์ต๋ช
ํจ์๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ฒ๋ผ ๋์ํ๋ฉฐ, ์ด๋ฆ์ ๊ฐ์ง ํจ์๋ฅผ ๋๋ฌ ์ผ๋ค.
onAddStationHandler(name);
})
์ต๋ช ํจ์๋ ๊ดํธ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ๋ ํ์ง๋ง ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋๋ง ์คํ๋ฉ๋๋ค. ์ด๋ฆ์ ๊ฐ์ง ํจ์๋ ์ต๋ช ํจ์๊ฐ ํธ์ถ๋ ๋๋ง ์คํ๋๋ฉฐ, ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
# 3. ์ด๋ฒคํธ์ ํ๋ฆ๊ณผ ์ ์ด
๋๋ถ๋ถ์ HTML ์์๋ ๋ค๋ฅธ ์์์ ๋ด๋ถ์ ์ค์ฒฉ๋ฉ๋๋ค. ๊ทธ๋์ ๋ฒํผ์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๊ฑฐ๋ ํด๋ฆญํ๋ฉด, ๊ทธ ๋ถ๋ชจ ์์ ํน์ ์์์์ ๋ํ ๊ฐ์ด ํด๋ฆญํ ๊ฒ๊ณผ ๊ฐ์ ๋์์ ์ผ์ผํค๋๋ฐ์.
๋งํฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ชฉ๋ก์ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ <a>
์์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํด๊ณผ ๋์์ <a>
๋ฅผ ํฌํจํ๊ณ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์์๋ค์๋ ๋์ผํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์์๋ฅผ ์ด๋ฒคํธ ํ๋ฆ(event flow)์ด๋ผ๊ณ ํ๋ฉฐ, ์ด๋ฒคํธ๊ฐ ํ๋ฅด๋ ๋ฐฉ์์ ๋ค์์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฒ๋ธ๋ง: ์ด๋ฒคํธ๊ฐ ์ฌ์ฉ์์ ๋์์ ์ง์ ์ ์ผ๋ก ์ํฅ์ ๋ฐ์ ๋ ธ๋๋ก๋ถํฐ ๋ฐ๊นฅ์ชฝ์ผ๋ก ์ ํ๋์ด ๋๊ฐ๋ ๋ฐฉ์. ์ด๋ฒคํธ ์บก์ณ๋ง: ์ด๋ฒคํธ๊ฐ ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ์ ๋ ธ๋๋ก๋ถํฐ ์์ํด์ ์์ชฝ์ผ๋ก ์ ํ๋์ด ๋ค์ด์ค๋ ๋ฐฉ์
์์ ๊ฐ์ ์ด๋ฒคํธ์ ํ๋ฆ์ผ๋ก ์ธํด ๋ด๊ฐ ์ํ๋ ๋์์ด์ธ์๋ ์ด๋ฒคํธ๊ฐ ํผ์ ธ๋๊ฐ์ ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ์ ๊ณตํด์ฃผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ฏธ๋ฆฌ ์๋ฐฉํ ์ ์์ต๋๋ค.
# Event ๊ฐ์ฒด
Event ๊ฐ์ฒด๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์์์ ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. Event ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์์
- keypress ์ด๋ฒคํธ๊ฐ ์ด๋ค ํค์ ์ํด ๋ฐ์ํ๋์ง์๋ํ ์ ๋ณด
- ์ฌ์ฉ์๊ฐ ์ด๋ค ์์๋ฅผ ํด๋ฆญํด์ click ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง์ ๋ํ ์ ๋ณด
์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ก ์ง์ ๋ ํจ์์ ์๋์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์์ฑ | ๋ชฉ์ |
---|---|
target | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์(์ฌ์ฉ์๊ฐ ์๋ํ ๊ฐ์ฅ ๋ช ํํ ์์) |
type | ๋ฐ์ํ ์ด๋ฒคํธ์ ์ข ๋ฅ |
๋ฉ์๋ | ๋ชฉ์ |
---|---|
preventDefault() | ์ด๋ฒคํธ์ ๊ธฐ๋ณธ ๋์์ ์ทจ์ํ๋ค. ๋งํฌ๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํผ์ ์ ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ด๋ฒคํธ๋ค์ ์ฌ์ฉ์์๊ฒ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋ค. ์ด๋ฐ ์์๋ค์ ๊ธฐ๋ณธ ๋์์ ์ค๋จํ๊ธฐ ์ํด์๋ (์๋ฅผ ๋ค๋ฉด, ์ฌ์ฉ์๊ฐ ๋งํฌ๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํผ์ ์ ์ถํด๋ ๊ณ์ ๊ฐ์ ํ์ด์ง์ ๋จธ๋ฌด๋ฅด๊ฒ ํ๋ ค๋ฉด) event ๊ฐ์ฒด์ preventDefault() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. |
stopPropagation() | ์ด๋ฒคํธ์ ์บก์ฒ๋ง์ด๋ ๋ฒ๋ธ๋ง์ ์ค๋จํ๋ค. ์ด๋ฒคํธ๊ฐ ๋ถ๋ชจ ์์๋ก ๋ฒ๋ธ๋ง๋๋ ๊ฒ์ (ํนํ ๋ถ๋ชจ ์์๊ฐ ๋์ผํ ์ด๋ฒคํธ์ ๋ํด ๊ฐ๋ณ์ ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋๋์ฑ) ์ค๋จํ๊ณ ์ถ์ ์ ์๋ค. ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ค๋จํ๋ ค๋ฉด event ๊ฐ์ฒด์ stopPropagation() ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค. |
๋ธ๋ผ์ฐ์ ์ ์ฝ์์ฐฝ์ ํค๊ณ , event
๋ฒํผ์ ํด๋ฆญํ์ ๋์, text
๋ฅผ ์
๋ ฅํ์ ๋ ์ฝ์ ์ฐฝ์ ๊ธฐ๋ก๋๋ event ๊ฐ์ฒด๋ฅผ ํ์ธํด๋ณด์ธ์.
# 4. ์ด๋ฒคํธ ์์
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ง์ ํ๋ ์์๊ฐ ๋ง์ผ๋ฉด ๋ง์์๋ก ํ์ด์ง์ ์คํ ์๋๋ ๋๋ ค์ง๋๋ค. ๊ทธ๋์ ํจ์จ์ ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ์ด๋ฒคํธ์ ํ๋ฆ์ ์ด์ฉํฉ๋๋ค. ์ด๋ฒคํธ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๋ฆฌ๋จผํธ๋ฅผ ํฌํจํ๊ณ ์๋ ๋ถ๋ชจ ์์์๋ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์์ ์์๋ฅผ ํฌํจํ ์ ์๋ ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ํ๊ณ ์ด๋ฒคํธ์ ํ๋ฆ์ ์ด์ฉํด ๋ค๋ฃฐ ์ ์์ต๋๋ค. ์ฆ, ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ์คํํ ์์ ์ ์์์ ๋ถ๋ชจ ์์์๊ฒ ์์(Delegation)ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
# ์ด๋ฒคํธ ์์์ ์ฅ์ ๋ค
๋์ ์ผ๋ก ์ถ๊ฐ๋๋ ์์๋ค์๋ ๋์ํ๋ค.
- DOMํธ๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋๋ผ๋ ์ด๋ฒคํธ์ ๋ํ ์ฒ๋ฆฌ๋ ๋ถ๋ชจ ์์์๊ฒ ์์๋์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ค์ ์ง์ ํ ํ์๊ฐ ์๋ค.
์ฝ๋์ ๊ฐ๊ฒฐ
- ์ด ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ํจ์๋ฅผ ๋ง์ด ์์ฑํ ํ์๊ฐ ์์ผ๋ฉฐ DOM๊ณผ ์ฝ๋๊ฐ์ ์ฐ๊ฒฐ์ด ๊ฐ์ํด์ ธ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ง๋ณด์์ ๋์์ด ๋๋ค.
<ul id="parent-list">
<li id="item1">Item 1</li>
<li id="item2">Item 2</li>
<li id="item3">Item 3</li>
</ul>
//์์ ๋
ธ๋์ ์ด๋ฒคํธ ์ค์
document.getElementById("parent-list").addEventListener("click", function (e) {
if (e.target && e.target.nodeName == "LI") {
console.log(`List item ${e.target.id} was clicked!`);
}
});
# ๐ ์ ๋ฆฌ
- ์ด๋ฒคํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ(๋ฒํผ์ ํด๋ฆญ ๋ฑ) ์ด๋ค ์ผ์ด ๋ฐ์ํ์์ ์๋ฆฌ๋ ์๋จ์ด๋ค.
- ๋ฐ์ธ๋ฉ์ ์ด๋ค ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง๋ฅผ ์ ์ํ๋ ๊ณผ์ ์ด๋ค.
- ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๊ฐ ํธ์ถ๋๋ค. ์ด ํจ์๊ฐ ์น ํ์ด์ง์ ๋ณํ๋ฅผ ์ค์, ์ฌ์ฉ์์ ํ๋์ ๋ฐ์์ ๋ณด์์ผ๋ก์จ ์ธํฐ๋ํฐ๋ธํ ๊ฒฝํ์ ๋ง๋ ๋ค.
- ์ด๋ฒคํธ ์ ํ๋ฅผ ์ด์ฉํ์ฌ ํน์ ์์์ ๋ชจ๋ ์์ ์์์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค.
- ์ด๋ฒคํธ ์์์ ์ด์ฉํ๋ฉด ๋์ ์ผ๋ก ์ถ๊ฐ๋๋ ์์์๋ ์๋์ ์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ธ๋ฉ ๋๋๋ก ํ ์ ์๋ค.