๐คทโ๏ธ ๋ณธ๋ก ์ ๋ค์ด๊ฐ๊ธฐ ์์ javascript ์ด๋ฒคํธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ดํด
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ์ด๋ฉฐ ์์ฉ์ ๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ํด๋ฆญํ๊ฑฐ๋ action์ ํตํด์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฅผ ํ์ฉํด ์น ํ์ด์ง ์์๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ์ด๋ฒคํธ๋ ์ค์ํ ์ญํ ์ ๋งก๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ๊ฐ document ๋ก๋ฉ์ ์๋ฃํ๋ฉด load ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด click ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฒคํธ๋ ํ ๋ฒ, ์ฌ๋ฌ ๋ฒ ๋๋ ์ ํ ๋ฐ์ํ์ง ์์ ์ ์์ต๋๋ค. ํนํ ์ฌ์ฉ์๊ฐ ์์ ์์ฑํ ์ด๋ฒคํธ๋ ์ธ์ ๋ฐ์ํ๋์ง ๋ชจ๋ฅผ ์๋ ์์ต๋๋ค.
์ด์ ๊ฐ์ ์๋๋ฆฌ์ค์์ ์ด๋ฒคํธ ๋ฐ์์ ๊ฐ์งํ๊ธฐ ์ํด ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์ฆ์ ๋ฐ์ํ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ addEventListener() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
์ด๋ ํน์ HTML ์์์ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ฒ ํด ์ฃผ๊ณ ์์๋น ํ๋ ์ด์์ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ ์ ์๊ฒ ํด ์ค๋๋ค.
๐คทโ๏ธ addEventListener ๊ธฐ๋ณธ ๋ฌธ๋ฒ
target.addEventListener(event, function, useCapture);
addEventListener ๋ ์์ธํ ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/19
๐คทโ๏ธ defaultPrevented ์ด๋ฒคํธ ์์ฑ
defaultPrevented ์ด๋ฒคํธ์ ๋ํด์ ์๊ธฐ์ ์์ preventDefault ์ stopPropagation ์ด๋ฒคํธ์ ๋ํด์ ์์๋ณด์
preventDefault ๋?
a ํ๊ทธ๋ submit ํ๊ทธ๋ ๋๋ฅด๊ฒ ๋๋ฉด href ๋ฅผ ํตํด ์ด๋ํ๊ฑฐ๋ , ์ฐฝ์ด ์๋ก๊ณ ์นจํ์ฌ ์คํ๋ฉ๋๋ค. preventDefault ๋ฅผ ํตํด ์ด๋ฌํ ๋์์ ๋ง์์ค ์ ์์ต๋๋ค.
์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋
1. a ํ๊ทธ๋ฅผ ๋๋ ์๋๋ href ๋งํฌ๋ก ์ด๋ํ์ง ์๊ฒ ํ ๊ฒฝ์ฐ
2. form ์์ submit ์ญํ ์ ํ๋ ๋ฒํผ์ ๋๋ ์ด๋ ์๋ก ์คํํ์ง ์๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ (submit์ ์๋๋จ)
ex:
<a href="https://cometruedream.tistory.com/">๊ฟ๋ง์ ๊ฐ๋ฐ์</a>
$("a").click(function(e){
e.preventDefault();
alert("e.preventDefault()");
});
stopPropagation ๋?
e.stopPropagation๋ ์ด๋ฒคํธ๊ฐ ์์ ์๋ฆฌ๋จผํธ์ ์ ๋ฌ๋์ง ์๊ฒ ๋ง์ ์ค๋ค.
ex:
<div class="first-cover">
<ul class="second-cover">
<li class="third-cover">
<div class="last-el">event</div>
</li>
</ul>
</div>
e.stopPropagation ์ถ๊ฐ ์ํด์ผ๋ก ์์์ ์ ๋ฌ๋๋ ์ด๋ฒคํธ๋ฅผ ๋ง์์ค๋ค.
$(".last-el").click(function(e){
e.stopPropagation();
alert("last-el");
});
$(".third-cover").click(function(){
alert("third-cover");
});
$(".second-cover").click(function(){
alert("second-cover");
});
$(".first-cover").click(function(){
alert("first-cover");
});
์ ์ ๋ฐ ์ฌ์ฉ
defaultPrevented ์ด๋ฒคํธ ์์ฑ์ ์ด๋ฒคํธ์ ๋ํด preventDefault() ๋ฉ์๋๊ฐ ํธ์ถ๋์๋์ง ํ์ธํฉ๋๋ค.
์์
๋งํฌ๊ฐ URL์ ์ฌ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ preventDefault()๊ฐ ํธ์ถ๋์๋์ง ํ์ธํ์ญ์์ค.
document.getElementById("myAnchor").addEventListener("click", function(event){
event.preventDefault() alert("Was preventDefault() called: " + event.defaultPrevented);
});
๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ
๋ฐํ ๊ฐ: | ์ด๋ฒคํธ์ ๋ํด preventDefault() ๋ฉ์๋๊ฐ ํธ์ถ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์
๋๋ค. ๊ฐ๋ฅํ ๊ฐ: • true - ์ด๋ฒคํธ์ ๋ํด preventDefault() ๋ฉ์๋๊ฐ ํธ์ถ๋์์ต๋๋ค. • false - ์ด๋ฒคํธ์ ๋ํด preventDefault() ๋ฉ์๋๊ฐ ํธ์ถ๋์ง ์์์ต๋๋ค. |
URL์ธ์ฝ๋ฉ & ๋์ฝ๋ฉ ํด๋ณด๊ธฐ
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
replaceAll is not a function ์ค๋ฅ ํด๊ฒฐ ๊ฒฝํ (0) | 2024.04.09 |
---|---|
script ์์์ defer๊ณผ async ์์ฑ์ ํตํ ํจ๊ณผ์ ์ธ ์คํฌ๋ฆฝํธ ๋ก๋ฉ (1) | 2024.03.19 |
javascript ์ค์์ดํผ(carousel) ๊ตฌํ (4) | 2023.04.06 |
javascript ๋ฌธ๋จ ์์ฑํ๊ธฐ (26) | 2023.03.02 |
javascript FAQ(์์ฃผ ๋ฌป๋ ์ง๋ฌธ) (30) | 2023.02.28 |