ホームページ >ウェブフロントエンド >jsチュートリアル >内部をクリックしたときにブートストラップドロップダウンが閉じないようにするにはどうすればよいですか?

内部をクリックしたときにブートストラップドロップダウンが閉じないようにするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 12:48:02727ブラウズ

How to Prevent Bootstrap Dropdown from Closing When Clicking Inside?

ドロップダウン メニュー内のクリック時に閉じないようにします

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 のドロップダウンの非表示/非表示イベントに依存することは、次の理由から解決策ではありません:

  • これら 2 つのイベント ハンドラーによって提供されるイベント オブジェクトは、クリックされたイベント ハンドラーを参照しません。要素 。
  • ドロップダウン メニューの内容を制御できないため、フラグ クラスまたは属性を追加できません。

以下は、通常の動作の fiddle デモと、event.stopPropagation() を追加した fiddle デモです。

更新

Roman さん、回答ありがとうございます。次のような別の答えも見つけました:

<code class="js">$(document).on('click', 'someyourContainer .dropdown-menu', function (e) {
  e.stopPropagation();
});</code>

以上が内部をクリックしたときにブートストラップドロップダウンが閉じないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。