2017-04-10 5 views
0

내가 부트 스트랩 드롭 다운 목록을 사용하고 있지만 내가 jQuery를 사용하고 있지 않다 언제 .. 내 코드가 여기드롭 다운이 표시되는 버튼 바깥 쪽을 클릭 할 때 드롭 다운 목록을 숨기는 방법은 무엇입니까?

<button class="btn dropdown-toggle" type="button" data-toggle="dropdown">User Name<span class="caret"></span></button> 
<ul class="dropdown-menu"> 
    <li><a href="#">Profile</a></li> 
    <li><a href="#">Logout</a></li> 
</ul> 

$('.dropdown-toggle').click(function() { 
$('.dropdown-menu').slideToggle(); 
}); 

입니다 거기에 내 자신의 jQuery를 부착 한 드롭 다운 몸의 아무 곳 (버튼 외부를 클릭에 숨겨진되고있다). 그러나 slideToggle 함수를 사용하면 숨기고 있지 않습니다. slideToggle() 드롭 다운을 숨기는 기능과 동일한 효과를 원합니다.

+0

가능한 복제 (HTTP 도움 알려/scrolloverflow.com/questions/152975/how-do-i-detect-a-click-outside-an-element) –

+0

@DeepakYadav하지만 slideToggle() 함수와 같은 효과로 드롭 다운을 숨기고 싶습니다. sllideToggle을 사용할 수 없습니다. 바디 클릭 기능 ...! –

+0

당신은 _ 요소 밖에서 클릭을 어떻게 감지합니까? _ 가능한 복제본을 제안했습니다. _하지만 질문 제목에서 언급하지 않은 창 클릭과 같은 효과가있는 다른 것을 원합니다! 그 죄송합니다! –

답변

0

내가 바로 당신을 이해하면 버튼 또는 드롭 다운을 제외하고 (몸의 아무 곳이나 클릭하면 원하는 통해 클릭의 전파 가능한 관찰을 줄일 수

...click(function(e){ 
e.stopPropagation(); 
... 
}); 

시도) slideUp으로 다시 드롭 다운합니다. 아래 코드를 사용할 수 있습니다./:

날이

이 조각 또는 바이올린 참조>jsfiddle

$('.dropdown-toggle').click(function() { 
 
     $('.dropdown-menu').slideToggle(); 
 
}); 
 
$(document).mouseup(function (e) 
 
{ 
 

 
    if (!$(".dropdown-menu").is(e.target) && 
 
     !$(".dropdown-toggle").is(e.target) && 
 
     $(".dropdown-menu").has(e.target).length === 0 && 
 
     $(".dropdown-toggle").has(e.target).length === 0) 
 
    { 
 
     $(".dropdown-menu").slideUp() 
 
    } 
 
});
section { 
 
\t position:relative 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 
 

 
<section> 
 
<button class="btn dropdown-toggle" type="button" data-toggle="dropdown">User Name<span class="caret"></span></button> 
 
<ul class="dropdown-menu"> 
 
    <li><a href="#">Profile</a></li> 
 
    <li><a href="#">Logout</a></li> 
 
</ul> 
 
</section>

[? 내가 요소 외부의 클릭을 감지 않는 방법]의
+0

Thanks @Mihai ...! 그게 내가 원하는 대답이다. –

+0

다행입니다. 건배! :디 –

1

이 계층화 된 HTML 요소

+0

답장을 보내 주셔서 감사합니다.하지만이 코드를 사용하는 경우 : - '$ ('. dropdown-toggle '). ($ ('드롭 다운 메뉴 ') slideToggle(); }); $ (내게는 효과가 있지만 효과가 없다!) ('(드롭 다운 메뉴') .$) –

+0

모든 것은'stopPropagation()'함수를 사용할 필요가 없다는 것을 의미합니다 .... –

관련 문제