[초보] body 클릭 시 창(메시지 팝업) 닫기

[초보] body 클릭 시 창(메시지 팝업) 닫기

QA

[초보] body 클릭 시 창(메시지 팝업) 닫기

답변 1

본문


<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>

 

.bell을 클릭하면 .message_list가 나오도록 스크립트를 작성했는데,

.message_list가 나왔을 때는 (.message_list.open일 때는)

body를 클릭해도, .bell을 클릭해도 창이 닫혔으면 좋겠습니다.

 

어떻게 스크립트를 수정하면 될까요?

 

이 질문에 댓글 쓰기 :

답변 1


<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<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>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 947
© SIRSOFT
현재 페이지 제일 처음으로