bootstrapドロップダウン内にフォームを配置しましたが、フォーム内のフィールドのいずれかをクリックすると、ドロップダウンが消えます。私はこのコードを持っていますが、ドロップダウンが消えないようにどこに置くべきかわかりません。
$(function test() {
// Setup drop down menu
$('.dropdown-toggle').dropdown();
// Fix input element click problem
$('.dropdown input, .dropdown label').click(function(e) {
e.stopPropagation();
});
});
誰かがこれをどこに置くべきか教えてもらえますか?ブートストラップドロップダウンで試しましたが、HTMLで試しましたが、まだ動作しません。
この例を使用するだけです。この解決策は私には有効です。
<script type="text/javascript">
window.addEvent('domready',function() {
Element.prototype.hide = function() {
$(function () {
// replace your tab id with myTab
//<ul id="myTab" class="nav nav-tabs">
$('#myTab li:eq(1) a').tab('show');
});
};
});
</script>
それが役立つことを願っています。ありがとう。
ドロップダウンコールをすべて省略できます。bootstrapドロップダウンはそれなしでも機能します。スクリプトを適切にラッピングしていることを確認し、ページのヘッダーまたは本文に含めることができますが、個人的にはページの本文に配置することを好みます。
JS
<script type="text/javascript">
$('.dropdown-menu input, .dropdown-menu label').click(function(e) {
e.stopPropagation();
});
</script>
すべてのドロップダウンメニューではなく、一部のドロップダウンメニューのみを閉じたくない場合は、追加のクラスをulブロックに追加します。
<ul class="dropdown-menu keep-open-on-click">
そして、このコードを使用します:
$(document).on('click', '.dropdown-menu', function(e) {
if ($(this).hasClass('keep-open-on-click')) { e.stopPropagation(); }
});
回答が受け入れられてから時間が経過しましたが、ドロップダウンを開いたままにしたい場合、それが一種のダイアログのように機能する場合、私が思う最善の方法は:
$('.dropdown').dropdown().on("hide.bs.dropdown", function(e) {
if ($.contains(dropdown, e.target)) {
e.preventDefault();
//or return false;
}
});
イベントがDOMツリーをバブリングするのを停止する必要があります。
$('.dropdown-menu').click(function(e) {
e.stopPropagation();
});
event.stopPropagationは、Bootstrap非表示メニューによって最終的に処理されるノードにイベントが到達するのを防ぎます。
これは私のために機能します(側面のサイドバーはbootstrapトグルで簡単なリンクを開きます)
$('.dropdown').find("a").not('.dropdown-toggle').on("click",function(e){
e.stopImmediatePropagation();
});
上記の答えをありがとう、ドロップダウンメニューの下のサブメニューで同じ問題が発生していました。上記のソリューションを使用して、この問題も解決することができました。
$('.dropdown-menu .dropdown-submenu a[data-toggle="dropdown-submenu"]').click(function (e)
{
e.stopPropagation();
});
ドロップダウンウィジェットのソースの下部を見ると、次のように表示されます。
$(document)
.on('click.bs.dropdown.data-api', '.dropdown form', function(e) {
e.stopPropagation()
})
したがって、次の選択肢があります。
- 単にドロップダウンをformで囲む
- または、。dropdown YOUR_SELECTORのクリックイベントのイベントリスナーを追加できます。
$(document)
.on('click.my', '.dropdown some_selector', function(e) {
e.stopPropagation()
})
プット
<script type="text/javascript">
$('.dropdown-menu').click(function(e) {
e.stopPropagation();
});
</script>
元の答えで、すべてのクラスを削除し、「。dropdown-menu」クラスを置くだけで、うまくいきました。ドロップダウンメニュー内に入力フィールドがあります。