티스토리 뷰
프로그래밍/JavaScript Web App
자바스크립트 event.stopPropagation(), event.preventDefault ()
쇠주는참이슬 2015. 4. 20. 13:45자바스크립트(Javascript)에서 이벤트 버블링 / 이벤트 캡처링을 막기위해서 아래와 같은 코드를 사용합니다.
event.stopPropagation(), event.preventDefault ()
이 두가지 이벤트의 차이는 사용자가 만든 이벤트를 막느냐 & 기본 이벤트를 막느냐 차이인데 자세한 내용은 아래 소스를 보고 설명하겠습니다.
<a href = "http://google.com"> <div id="blockArea"> <img src="logo.png" id="logo" alt="logo"></img> </div> </a> <script> document.getElementById("blockArea").onclick = function(){ alert("block click"); }); document.getElementById("logo").onclick = function(){ alert("logo click"); }); </script>
위와 같은 마크업 태그가 있다고 가정할시에
이미지를 클릭하면 아래와 같은 순서로 이벤트가발생합니다.
alert("logo click") -> alert("block click") -> http://google.com 으로 이동
위 마크업에서 아래와 같이 stopPropagation(); 를 사용하면
<a href = "http://google.com"> <div id="blockArea"> <img src="logo.png" id="logo" alt="logo"></img> </div> </a> <script> document.getElementById("blockArea").onclick = function(){ alert("block click"); }); document.getElementById("logo").onclick = function(e){ e.stopPropagation(); alert("logo click"); }); </script>
사용자의 액션에 의한 이벤트가 막아지므로 alert("block click") 이벤트를 막을 수 있다. 하지만 기본이벤트인 a href="http://google.com" 으로의 이동은 막을 수 없습니다.
반대로 preventDefault(); 를 사용하면 브라우저의 기본 이벤트가 무효화 되므로
a href 태그의 링크가 작동하지 않는다. 하지만 사용자가 정의한 이벤트 alert("logo click") -> alert("block click") 는 발생합니다.
만약 둘다 막고 싶다면 stopPropagation(); / preventDefault(); 를 둘다 이용하면 됩니다.
'프로그래밍 > JavaScript Web App' 카테고리의 다른 글
CORS 상황에서 ajax response로 쿠키(cookie)를 생성할 때 생성되지 않는 경우 (0) | 2015.12.09 |
---|---|
자바스크립트 클릭 이벤트 흐름도 (터치이벤트 지원디바이즈 기준) (0) | 2015.04.21 |
배열을 유니크하게 골라내기 (배열중복제거) (0) | 2015.03.31 |
Function Declarations(함수선언) vs Function Expressions(함수표현) (함수호이스팅 hoisting) (0) | 2015.03.09 |
제이쿼리 플러그인 만들기 (jQuery Plugin) (0) | 2015.02.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- WebApi
- css3
- jquery chart
- IE
- Style
- Chart
- Mobile
- JavaScript
- 셀렉터
- workbook
- html5
- 자바스크립트
- 저장프로시저
- 제이쿼리
- ASP.NET
- 프로시저
- Ajax
- jQuery
- radius
- CSS
- WCF
- JS
- rowspan
- MSSQL
- json
- drag&drop
- Excel
- grid
- jQuery Mobile
- SVG
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함