ํฐ์คํ ๋ฆฌ ๋ทฐ
document.addEventListener('click', function (event) {
if(event.target === document.querySelector('button')) return;
(...)
}, false);
๋ค์๊ณผ ๊ฐ์ด ํด๋์ค๋ ์์ด๋๋ช ์ด ์ง์ ๋์ด ์์ง ์์ ๋ฒํผ ์์๋ฅผ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ด์์ ์๋ณํ๊ธฐ ์ํด์ ์กฐ๊ฑด๋ฌธ์ ์์ฑํ์๋ค.
ํ์ง๋ง ์ฌ๋ฌ ๋ฒํผ ์ค ๊ฐ์ฅ ์ฒ์์ ์๋ ๋ฒํผ ์์๋ง ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
๋ฌธ์ ํด๊ฒฐ
Document.querySelector()๋ ์ ๊ณตํ ์ ํ์ ๋๋ ์ ํ์ ๋ญ์น์ ์ผ์นํ๋ ๋ฌธ์ ๋ด ์ฒซ ๋ฒ์งธ Element๋ฅผ ๋ฐํํฉ๋๋ค. ์ผ์นํ๋ ์์๊ฐ ์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค.
querySelector๋ก ์ฐธ์กฐํ ๋ ธ๋ ๊ฐ์ฒด๋ ๋ฌธ์ ๋ด ์ฒซ ๋ฒ์งธ Element๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ฌ์ด ๋ฌธ์ ์๋ค.
์ด๋ฅผ ๋์ ์ ๋ค์๊ณผ ๊ฐ์ด Array.includes()๋ฅผ ๋์ ํ์ฌ ์์๋ฅผ ์๋ณํ์๋ค.
document.addEventListener('click', function (event) {
if(Array.from(document.querySelectorAll('button')).includes(event.target)) return;
//querySelectorAll๋ก ๊ฐ์ ธ์จ ๊ฐ์ฒด๋ HtmlCollection ์ ์ฌ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ์ ๊ท ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ค์ผ ๋จ
(...)
}, false);
- Element.matches()
document.addEventListener('click', function (event) {
if(event.target.matches("#pageContainer button")) return;
(...)
}, false);
- (์ถ๊ฐ 2021.07.28)HtmlElement.nodeName
$itemList.addEventListener('click', (event) => {
if(event.target.nodeName !== 'LI') return;
(...)
});
์ฃผ์ํ ์ ์ nodeName ํ๋กํผํฐ๋ ์ธ์ ๋ ํด๋น HTML ์์์ ํ๊ทธ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์ ์ฅํ๋ค๋ ๊ฒ์ด๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS ์์์ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ฒด ๋์ ํ ๋น (0) | 2021.07.25 |
---|---|
์คํฌ๋กค ์์น ๊ฐ์ ธ์ค๊ธฐ (0) | 2021.07.23 |
getPropertyValue์ ๋ฐํ๊ฐ (0) | 2021.07.20 |
setTimeout์ผ๋ก setInterval ๊ตฌํ (0) | 2021.07.18 |
pipe operator๋ฅผ ํตํด ์คํผ๋ ์ดํฐ ์ฒ๋ฆฌ (0) | 2021.07.17 |
๋๊ธ