2017-04-10 7 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ことができます知っています/tackoverflow.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

ありがとう@Mihai ...!それは私が欲しい答えです。 –

+0

うれしかったです。歓声! :D –

1

は、これは私が右のあなたを理解していれば、ボタンやドロップダウン以外(身体上の任意の場所をクリックすると、あなたがしたいレイヤードHTML要素

+0

このコードを使用していただきありがとうございます。 - '$( '。dropdown-toggle')をクリックしてください(function(){ $( '。ドロップダウンメニュー')。slideToggle(); } ); $(ウィンドウ).click(function(){ $( '。ドロップダウンメニュー')。hide(); }); '私の解決策を得ていますが、効果がありません! –

+0

私はそれが 'stopPropagation()'関数を使う必要がないことを意味します.... –

関連する問題