본문 바로가기
Frontend/jQuery

자식요소 이벤트를 위해 부모요소 이벤트 막는 방법

by 지구 2018. 7. 25.

자식요소 이벤트를 사용하기 위해 부모요소 이벤트를 막는 방법


이처럼 큰 네모박스(article) 을 클릭하면 '일정 상세보기' 페이지로 가게끔 jQuery를 걸어놨지만,

큰 네모박스(article) 안에 'X버튼' 또는 '일정 수정하기' 또는 '게시물로 공유하기' 와 같이 자식요소를 클릭하면 그에 맞게 이벤트가 걸려야하는데,

jQuery를 잘 잡아도 부모요소의 이벤트인 '일정 상세보기' 페이지로 넘어가더라.

이에 대한 해결방법은, 자식요소에 e.stopPropagation(); 사용하기 !



* 사용방법 *

1. HTML <body> 내부

1
2
3
4
5
6
7
8
9
10
11
<article class="${schedule.scheduleNo}">
<!-- 썸네일 형식의 작성한 글 이미지 -->
<div class="thumbImg" style="width:auto; height:250px;">
    <img src="/images/schedule/${schedule.scheduleImg}" class="img-thumbnail">
</div>
<!-- 마우스 오버시 보여지는 부분 -->
<div class="links" style="text-align:center;">
    <button type="button" class="btn btn-default" id="updateSchedule${schedule.scheduleNo}">일정 수정하기</button
    <button type="button" class="btn btn-warning" id="addBoard${schedule.scheduleNo}">게시물로 공유하기</button>
</div>
</article>
cs

2. jQuery 부분

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//일정 클릭시 일정 상세보기로 이동하는 스크립트
$("article").on("click"function(){
    self.location="/schedule/getSchedule?scheduleNo="+$(this).attr("class");
})
 
//게시물로 공유
$("button[id^='addBoard']").on("click"function(e){
    e.stopPropagation();
    var scheduleNo =  $(this).attr("id").replace(/[^0-9]/g,"");
    $.ajax({
        url : "/board/json/addBoard/"+scheduleNo,
        method : "POST",
        success : function(data){
            swal("글쓰기 완료!""마이페이지 내 작성한 글 보기에서 확인가능합니다!""success");
            $("#addBoard"+scheduleNo).css("display","none");
        }
    }) //e.o.ajax
})
cs



참고 사이트 : http://webie.tistory.com/123

반응형

댓글