[초보] body 클릭 시 창(메시지 팝업) 닫기 채택완료
김태후니
2년 전
조회 2,480
</p>
<p><div class="member_wrap after float_r">
<div class="message po_rel">
<div class="bell new"><!-- 새로운 메시지 있을 때는 new 클래스 -->
<img src="/fontawesome/svgs/solid/bell.svg" alt="">
</div>
<div class="message_list"> <!-- 이게 .bell을 클릭하면 나오는 메시지 목록 창입니다. -->
<ul>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
</ul>
</div>
</div>
</div>
<script>
$(".message .bell").click(function(){
$(".message_list").slideToggle(100).toggleClass('open');
});
</script></p>
<p>
.bell을 클릭하면 .message_list가 나오도록 스크립트를 작성했는데,
.message_list가 나왔을 때는 (.message_list.open일 때는)
body를 클릭해도, .bell을 클릭해도 창이 닫혔으면 좋겠습니다.
어떻게 스크립트를 수정하면 될까요?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
2년 전
</p>
<p><script src="<a href="http://code.jquery.com/jquery-latest.min.js"></script>" target="_blank" rel="noopener noreferrer">http://code.jquery.com/jquery-latest.min.js"></script></a></p>
<p><div class="member_wrap after float_r">
<div class="message po_rel">
<div class="bell new"><!-- 새로운 메시지 있을 때는 new 클래스 -->
<img src="/fontawesome/svgs/solid/bell.svg" alt="">
</div>
<div class="message_list"> <!-- 이게 .bell을 클릭하면 나오는 메시지 목록 창입니다. -->
<ul>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
<li><a href="">참여자로 지정된 프로젝트가 있습니다. {프로젝트명}</a></li>
</ul>
</div>
</div>
</div>
<script>
// $(".message .bell").click(function(){
// $(".message_list").slideToggle(100).toggleClass('open');
// });
$('body').on('click', function(evt){
var obj_target = $(evt.target).closest('.message .bell').get(0);
if (obj_target !== undefined) {
$(".message_list").slideToggle(100).toggleClass('open');
} else {
// var has_open = $(".message_list").hasClass('open');
var has_open = $(".message_list").css('display') != 'none';
if (has_open == true) {
$(".message_list").slideToggle(100).removeClass('open');
}
}
});
</script></p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
김태후니
2년 전
너무 작동 잘합니다. 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인