드롭다운쓰는데 여백클릭시 닫히게 하려면

드롭다운쓰는데 여백클릭시 닫히게 하려면

QA

드롭다운쓰는데 여백클릭시 닫히게 하려면

답변 2

본문

현재 드롭다운버튼을 쓰고 있는데요

 

버튼 누르면~~ 내용이 나오고

버튼을 다시 누르면~~ 내용이 닫히고 있거든요..(꼭 버튼을 눌러야지만 작동)

 

sir 전체보기 누르면 메뉴가 드롭다운으로 나오고 여백을 눌러도 고정되어있는 반면에

다시 전체보기를 누르면 닫히고 있고요! 

 

 

2072820919_1684053137.4139.png

 

저는...버튼을 눌러도 닫히지만

여백부분을 클릭해도 닫히게 하고 싶거든요...

 

그런데..이런걸 분명 예전에 봤었는데......뭐라고 하는지 명칭도 잘모르겠고

그러다보니 검색도 잘 안되고 있어서..

 

팁이나 조언이 좀 있다면 감사드리겠습니다~

이 질문에 댓글 쓰기 :

답변 2

버튼 엘리먼트와 메뉴 엘리먼트 보다 상위 노드에 이벤트 핸들러를 등록하는 방법이 있습니다.


<style>
#menu_viewall {
    background-color: silver;
    display: none;
}
</style>
 
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(function () {
    // --------------------------------- control by button only
    // $('#btn_viewall').click(function () {
    //     $('#menu_viewall').toggle();
    // });
 
    // --------------------------------- control by any element
    $(document).click(function (evt) {
        var is_btn_viewall = $(evt.target).closest('#btn_viewall').length;
        var is_menu_viewall = $(evt.target).closest('#menu_viewall').length;
        if (is_btn_viewall > 0) {
            $('#menu_viewall').toggle();
        } else if (is_menu_viewall == 0) {
            $('#menu_viewall').hide();
        }
    });
});
</script>
 
<button id="btn_viewall">전체보기</button>
<ul id="menu_viewall">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

베르만님처럼 하는 방법도 있고

드롭다운 상위에 backgrund 로 쓸 div 를 하나 더 로드합니다.

<div>

     <div>드롭다운</div>

</div>

 

이런 형태겠죠.

첫번째 div 에 20% 정도의 black 컬러를 주고

첫번째 div 클릭시 hide 를 주면됩니다.

이때 두번째 div 범위는 제외해야 하므로 stopPropagation 도 함께 적용합니다.

 

<div onclick="$(this).fadeOut();">
    <div onclick="event.stopPropagation();">
        내용
    </div>
</div>

 

간단하게 인라인 처리하면 이렇게 되겠네요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로