ホームページ >ウェブフロントエンド >jsチュートリアル >内部をクリックしたときにブートストラップドロップダウンが閉じないようにするにはどうすればよいですか?
ドロップダウン メニュー内のクリック時に閉じないようにします
Twitter Bootstrap では、ドロップダウン メニューはクリック時に閉じます (メニュー内をクリックした場合でも)。これを回避するには、クリック イベント ハンドラーをドロップダウンにアタッチし、有名なevent.stopPropagation()を追加します。
<code class="html"><ul class="nav navbar-nav"> <li class="dropdown mega-dropdown"> <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-list-alt"></i> Menu item 1 <span class="fa fa-chevron-down pull-right"></span> </a> <ul class="dropdown-menu mega-dropdown-menu"> <li> <div id="carousel" class="carousel slide" data-ride="carousel"> <ol class="carousel-indicators"> <li data-slide-to="0" data-target="#carousel"></li> <li class="active" data-slide-to="1" data-target="#carousel"></li> </ol> <div class="carousel-inner"> <div class="item"> <img alt="" class="img-rounded" src="img1.jpg"> </div> <div class="item active"> <img alt="" class="img-rounded" src="img2.jpg"> </div> </div> <a data-slide="prev" role="button" href="#carousel" class="left carousel-control"> <span class="glyphicon glyphicon-chevron-left"></span> </a> <a data-slide="next" role="button" href="#carousel" class="right carousel-control"> <span class="glyphicon glyphicon-chevron-right"></span> </a> </div> </li> </ul> </li> </ul></code>
この方法は簡単で非常に一般的であるように見えますが、カルーセル コントロール (およびカルーセル インジケーター) のイベント ハンドラーはドキュメント オブジェクトに委任されているため、これらの要素 (前/次のコントロール) には適していません。 、など)は「無視」されます。
<code class="js">$('ul.dropdown-menu.mega-dropdown-menu').on('click', function(event){ // 不会向document 节点传播事件 // 所以委托的事件不会被触发 event.stopPropagation(); });</code>
Twitter Bootstrap のドロップダウンの非表示/非表示イベントに依存することは、次の理由から解決策ではありません:
以下は、通常の動作の fiddle デモと、event.stopPropagation() を追加した fiddle デモです。
更新
Roman さん、回答ありがとうございます。次のような別の答えも見つけました:
<code class="js">$(document).on('click', 'someyourContainer .dropdown-menu', function (e) { e.stopPropagation(); });</code>
以上が内部をクリックしたときにブートストラップドロップダウンが閉じないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。