ch2-event
์ด๋ฒคํธ๋ JS์ ๋นํ์ค ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค.
2.1 ์ด๋ฒคํธ ์์
addEventListener()๋ ์ด๋ฒคํธ์ ํต์ฌ ํจ์๋ก ์ธ ๊ฐ์ง ๋งค๊ฐ๋ณ์์ธ type(์ด๋ฒคํธ ์ข
๋ฅ), listener(์ฝ๋ฐฑ), useCaptuer๋ฅผ ํฌํจํ๋ค. ์ด ์ค type, listener๋ ๋งค๊ฐ๋ณ์๋ก DOM ์๋ฆฌ๋จผํธ์ ํจ์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋ค.
var button = document.getElementById("createButton");
button.addEventListener("click", function(){}, false);addEventListener()๋ฅผ ํธ์ถ์ ๋๊ฒจ์ค ๋งค๊ฐ๋ณ์๋ฅผ
removeEventListener()์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ธฐ์กด์ ๋ฑ๋กํ ๋ฆฌ์ค๋๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.
๋ฆฌ์ค๋ ํจ์๋ฅผ ์ต๋ช ํจ์๋ก ์ ์ํ๋ฉด์ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด์กดํ์ง ์์๋ค๋ฉด
์๋ฆฌ๋จผํธ ์์ฒด๋ฅผ ์ญ์ ํ์ง ์๊ณ ๋ ๋ฑ๋กํ ๋ฆฌ์ค๋๋ฅผ ์ญ์ ํ ์ ์๋ค.
์ฒซ๋ฒ์จฐ ์ธ์๋ก ์ด๋ฒคํธ ๊ด๋ จ ์ ๋ณด๋ฅผ ํฌํจํ๋ event ์ค๋ธ์ ํธ๋ฅผ ์ ๋ฌํ๋ค.
e ์ค๋ธ์ ํธ๋ event propogation, ๊ธฐ๋ณธ ๋์ ์คํ ๋ฐฉ์ง ๋ฑ ๋ค์ํ ํจ์ ์ ๊ณต.
2.2 ์ด๋ฒคํธ ์์
ํน์ ํ์ ์ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์๋ฆฌ๋จผํธ์ ์๋ฆฌ๋จผํธ์ ๋ถ๋ชจ๊ฐ ๋์์ ํฌํจํ๊ณ ์๋ ์ํฉ์ ๊ฐ์ ํ์.
์ด ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋๊ตฌ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋จผ์ ์คํ๋ ๊น?
๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด๋ค.
๋ท์ค์ผ์ดํ 4๋ ๊ฐ์ฅ ์์ ๋ถ๋ชจ์์, ์ฆ ๋ฐ๊นฅ์ชฝ์์ ์์ชฝ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์คํํ๋ ์ด๋ฒคํธ ์บก์ฒ๋ง ์ง์
MS๋ ์๋ฆฌ๋จผํธ์์ ๋ถ๋ชจ๋ก ์ด๋ฒคํธ๋ฅผ ์ ํํ๋ ์ฆ, ์์ชฝ์์ ๋ฐ๊นฅ์ชฝ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์คํํ๋ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ์ง์
ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด ๋๋ถ๋ถ์ event bubbling์ ์ฌ์ฉํ๋ค.
2.3 ์ด๋ฒคํธ ์ทจ์
stopPropogation() ํจ์๋ก ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ์ค๋จ ๊ฐ๋ฅ.
๋ธ๋ผ์ฐ์ ๋ ์ด๋ฒคํธ์ ๊ธฐ๋ณธ ๋์์ ์ ๊ณตํ๋ค.
์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ๋ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด, ์ ํ์ด์ง ๋ก๋ํ๊ณ ์ฒดํฌ๋ฐ์ค ํด๋ฆญ์, ์ฒดํฌ๋ฐ์ค๋ฅผ ์ค์ ํ๋ค.
์ด๋ฌํ ๊ธฐ๋ณธ๋์์ ์ด๋ฒคํธ ์ ๋ฌ๊ณผ์ ์ด ๋๋ ๋ค์ ์คํ๋๋ค.
์ํ๋ค๋ฉด ์ด๋ฒคํธ ์ ๋ฌ ๊ณผ์ ์์ ๊ธฐ๋ณธ ๋์์ ์ทจ์ํ ์ ์๋ค.
event.preventDefault() ๋ฅผ ํตํด ๊ธฐ๋ณธ๋์์ ๋ง์ ์ ์๋ค.
๋๋ ํธ๋ค๋ฌ์์ false๋ฅผ ๋ฐํํด๋ ๊ธฐ๋ณธ ๋์์ด ์คํ๋์ง ์๋๋ค.
2.4 Event Object
2.5 ์ด๋ฒคํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋๋ถ๋ถ์ ์ํฉ์์ JS๋ก ์ด๋ฒคํธ ๊ด๋ฆฌ๋ฅผ ํ๋ค.
jQuery์ ์ด๋ฒคํธ ๊ด๋ฆฌ API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
jQuery API๋ ๋ธ๋ผ์ฐ์ ์ข
๋ฅ์ ๊ด๊ณ์์ด ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ์ ์๋๋ก bind() ํจ์๋ฅผ ์ ๊ณตํ๋ค.
jQuery ์ธ์คํด์ค์์ bind()๋ฅผ ํธ์ถํ ์ ์๋ค. ์ด ๋ ์ด๋ฒคํธ ์ด๋ฆ๊ณผ ํธ๋ค๋ฌ๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ค.
jQuery๋ click, submit, mouseover ๋ฑ๊ณผ ๊ฐ์ ์ด๋ฒคํธ ํ์ ์ ๋จ์ถํ์ ์ ๊ณตํ๋ค.
ํ์ด์ง๋ฅผ ๋ก๋ํ ๋ค์(์๋ฆฌ๋จผํธ ์์ฑ ํ) ์ด๋ฒคํธ ์ถ๊ฐํ ์ ์๋ค.
์๋์ฐ load ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ load ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
์๋์ฐ์ load๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๋ณด๋ค DOMContentLoaded๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์ค์ฉ์ ์ด๋ค.
DOM์ด ์ค๋น๋ ๋ค์์ ํ์ด์ง์ ์ด๋ฏธ์ง์ ์คํ์ผ์ํธ๋ฅผ ๋ด๋ ค๋ฐ๋๋ค.
DOMContentLoaded๋ ํ์ด์ง์ ์ด๋ฏธ์ง์ ์คํ์์ํธ๋ฅผ ๋ด๋ ค๋ฐ๊ธฐ ์ ์ ์คํ๋๋ค.
์ฆ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ํธ์์ฉ์ ํ๊ธฐ ์ ์ ํญ์ DOMContentLoaded๊ฐ ๋จผ์ ํธ์ถ๋๋ค.
๊ทผ๋ฐ, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ง์ํ์ง ์๋๋ค.
๊ทธ๋์ jQuery๋ .ready(callback) ํจ์๋ก ์ด ๊ธฐ๋ฅ์ ์ถ์ํ ํ๋ค.
2.6 ์ปจํ
์คํธ ๋ณ๊ฒฝ
ํธ๋ค๋ฌ๊ฐ ์คํ ๋ ๋ ์ปจํ ์คํธ๊ฐ ๋ฐ๋ ์ ์๋๋ฐ ์ด๋ ์ด๋ฒคํธ์์ ๊ฐ์ฅ ํผ๋์ ์ค ์ ์๋ ๋ถ๋ถ์ด๋ค.
addEventListener()๋ฅผ ์ด์ฉ์ ๊ธฐ์กด ์ง์ญ ์ปจํ
์คํธ๊ฐ ๋์ HTML ์๋ฆฌ๋จผํธ ์ปจํ
์คํธ๋ก ๋ฐ๋๋ค.
์๋ ์ปจํ
์คํธ๋ฅผ ๋ณด์กดํ๋ ค๋ฉด ์ต๋ช
ํจ์๋ก ํธ๋ค๋ฌ๋ฅผ ๊ฐ์ธ์ ์๋ ์ปจํ
์คํธ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ ์งํด์ผ ํ๋ค.
ํ๋ก์ ํจ์๋ก ํ์ฌ ์ปจํ ์คํธ๋ฅผ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณผ ๋ ์ด ํจํด์ ํ์ฉ ํ๋ค.
jQuery์ proxy() ํจ์ ํจํด ์ฆ, ์คํํ ํจ์์ ์ํ๋ ์ปจํ
์คํธ๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ ๋๋ฆฌ ์ฌ์ฉํ๋ค.
์ด ๋ถ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ๋ค..
2.7 ์ด๋ฒคํธ ์์
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์์์ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ฌํ ์ ์๋๋ก ๋ถ๋ชจ์ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ๋ค.
์ฆ, ๋ถ๋ชจ์ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์๋ฅผ ์ค์ธ๋ค
jQuery๋ ์ด ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํ๋ค.
delegate() ํจ์์ ์์ ์
๋ ํฐ, ์ด๋ฒคํธ ํ์
, ํธ๋ค๋ฌ๋ฅผ ๋๊ฒจ์ค์ ์ด๋ฒคํธ๋ฅผ ์์ํ ์ ์๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋ชจ๋ li ์๋ฆฌ๋จผํธ์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
๋ฐ๋ผ์, ์ด๋ฅผ ์ด์ฉํด ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ ๊ฐ์ ํ ์ ์๋ค.
2.8 ์ปค์คํ
์ด๋ฒคํธ
์ปค์คํ ์ด๋ฒคํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ํ์์ ์ธ ํจํด์ด๋ค.
๊ทธ๋์ ๋ง์ jQuery ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉํ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
๋ง๋๋ ค๋ฉด jQuery๋ Prototype ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ผํ๋ค.
jQuery์์๋ trigger() ํจ์๋ก ์ปค์คํ
์ด๋ฒคํธ ๋ฐ์์ํฌ ์ ์๋ค.
์ด๋ฒคํธ ์ด๋ฆ์ ์ด์ฉํด namespace๋ฅผ ์ฌ์ฉํ ์ ์๋ค. namespace๋ ๋ง์นจํ์ ์ญ์์ผ๋ก ๊ตฌ๋ถํ๋ค.
trigger() ํจ์์ ์ธ์๋ฅผ ์ถ๊ฐํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ๋ฅํ๋ค.
๋ค์ดํฐ๋ธ ์ด๋ฒคํธ(๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ์ด๋ฒคํธ)์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค์คํ ์ด๋ฒคํธ๋ DOM ํธ๋ฆฌ์์ ์ ํ๋๋ค.
2.9 ์ปค์คํ
์ด๋ฒคํธ์ jQuery ํ๋ฌ๊ทธ์ธ
Last updated
Was this helpful?