JavaScript/javascript

e.preventDefault() 와 e.stopPropagation() 의 차이

BBB.OOO 2024. 3. 20. 10:33
반응형

e.preventDefault() 와 e.stopPropagation() 는 이벤트 관련 동작에서 많이 사용되는 코드이다.

 

e.preventDefault()

e.preventDefault() 는 a 태그나 submit 처럼 페이지를 이동시키거나 form 태그의 submit 하는 동작을

중지시킨다.

 

// javascript
$("a").click(function(e){
	e.preventDefault();
    alert('prevnetDefault 로 인해 이벤트 중지');
});

// html
<a href="https://www.naver.com">네이버 페이지 이동</a>

 

위처럼 "네이버 페이지 이동" 이라는 a 태그의 링크를 클릭하면 click 이벤트 함수가 발생하고 e.preventDefault() 로

인해 이벤트가 중지된다.

 

e.stopPropagation()

e.stopPropagation() 이벤트 함수는 상위 엘리먼트들로의 이벤트 전파를 막아준다.

 

아래 예시를 확인하자.

//javascript
$(".click_element").click(function(e){
	e.stopPropagation();
	alert("click_element CLICK");
});
$(".third_element").click(function(){
	alert("third_element CLICK");
});
$(".second_element").click(function(){
	alert("second_element CLICK");
});
$(".first_element").click(function(){
	alert("first_element CLICK");
});

//html
<div class="first_element">
	<ul class="second_element">
    	<li class="third_element">
        	<div class="click_element">CLICK EVENT</div>
        </li>
    </ul>
</div>

 

위 소스에서 "e.stopPropagation" 이벤트 함수가 없을때 "CLICK EVENT" 를 클릭하면 click_element Click 이벤트 함수 뿐만이 아니라 상위 엘리먼트들인 first_element, second_element, third_element 이벤트도 발생한다.

 

이럴때 "e.stopPropagation()" 이벤트 함수를 통해 상위 엘리먼트들은 이벤트가 발생하지 않도록 할 수 있다.

 

 

요약

  • e.preventDefault() : 이벤트를 중단시킨다.
  • e.stopPropagation() : 상위 엘리먼트들로의 이벤트 전파를 중단시킨다.(클릭하는 이벤트만 발생)
반응형