-
Notifications
You must be signed in to change notification settings - Fork 0
jquery_event_handling
DOM ์์๊ฐ ๊ฒน์ณ์๋ ์ํฉ์์ ๊ฐ์ฅ ํ์ ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์์๊น์ง ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๊ณ ๋ค์ ์์๋ก ์ ๋ฌ๋๋ค. ์ด ์ํฉ์์ ํ์ ์์๋ก ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์บก์ฒ๋ง์ด๋ผ๊ณ ํ๊ณ , ์ด๋ฒคํธ๊ฐ ํ์ ์์์์ ์์ ์์๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ๋ฒ๋ธ๋ง์ด๋ผ๊ณ ํ๋ค.
์ด๋ฒคํธ ์บก์ฒ๋ง ๋์์์ ์ด๋ฒคํธ ์ ๋ฌ ์ฐจ๋จ
์ด๋ฒคํธ ์บก์ฒ๋ง์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ์ฌ ์์ ์ด๋ฒคํธ์์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ํ์ ์์์ ์ด๋ฒคํธ ์ ๋ฌ์ ์ฐจ๋จํ ์ ์๋ค.
์์ : ์ด๋ฒคํธ ์บก์ฒ๋ง์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ์ ๋ฌ ์ฐจ๋จ
ํ์ฉ
- ๋ค์์ DOM์ ํ๊บผ๋ฒ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํ ๋นํด์ผ ํ ๋
- ๋์ ์ธ DOM์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๊ทธ๋๊ทธ๋ ํ ๋นํด์ผ ํ ๋
์๋ฅผ ๋ค์ด, 10000๊ฐ์ Cell์ ์ด๋ฒคํธ๋ฅผ ํ ๋นํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ด๊ธฐํ ๋จ๊ณ์์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ํ ๋นํ๋๋ผ ๋ฉ์นซ๊ฑฐ๋ฆฌ๊ฒ ๋์ด ์ฌ์ฉ์ ๊ฒฝํ์ด ๋๋น ์ง ์ ์๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ ๋จ๊ณ์์ ๋ง์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํ ๋นํ๊ธฐ๋ณด๋ค๋ ๊ฐ๋จํ๊ฒ ํ๋์ ๋ถ๋ชจ DOM์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ํ ๋นํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ด๋ฒคํธ ๋ธ๋ฆฌ๊ฒ์ด์ ๋์์ธ ํจํด์ด๋ค.
์ด๋ฒคํธ ์บก์ฒ๋ง์ด๋ ๋ฒ๋ธ๋ง์ ํด์ผํด์ <body>์ฒ๋ผ ์์ฃผ ์์์ DOM์ ์ด๋ฒคํธ๋ฅผ ๊ฑธ๊ฒ ๋๋ฉด ๊ฐ๊ฐ์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ์์์ด ์ง์ HTML DOM๋ง๋ค ์ด๋ฒคํธ๋ฅผ ๊ฑฐ๋ ๊ฒ๋ณด๋ค ๋ง์ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ด๊ธฐํ ๋จ๊ณ์์์ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ๋์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐจ์ด๋ฅผ ์ ๊ณ ๋ คํ์ฌ ์ ๋นํ ์ ์ wrapper๋ฅผ ๊ฒฐ์ ํด์ ์ด๋ฒคํธ ๋ธ๋ฆฌ๊ฒ์ด์
ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ฐธ๊ณ : ์ด๋ฒคํธ ๋ธ๋ฆฌ๊ฒ์ด์ ํจํด
jQuery๋ ์ด๋ฒคํธ ์บก์ณ๋ง์ ์ง์ํ์ง ์๊ณ , ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
์ค์ฒฉ๋ ์์์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํด๋ ํ์ ์์๊น์ง ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋ ๋ค์ ์์ ์ด๋ฒคํธ๋ก ์ ๋ฌํ๋ฉด์(๋ฒ๋ธ๋ง) ๋ฑ๋ก๋ ์ฝ๋ฐฑ์ ํธ์ถํ๋ ๊ตฌ์กฐ๋ค.
๋ฐ๋ผ์ ์ด๋ฒคํธ ์บก์ณ๋ง ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ, DOM API๋ฅผ ์ฌ์ฉํด์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํด์ผ ํ๋ค.
Event capturing jQuery
//Use event capturing instead:
$("body").get(0).addEventListener("click", function(){}, true);
// For cross browser implementation.
var bodyEle = $("body").get(0);
if(bodyEle.addEventListener){
bodyEle.addEventListener("click", function(){}, true);
}else if(bodyEle.attachEvent){
document.attachEvent("onclick", function(){
var event = window.event;
});
}์ฐธ๊ณ : Event capturing jQuery