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

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

Barbara Streisand
リリース: 2024-10-25 12:48:02
オリジナル
719 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート