>웹 프론트엔드 >JS 튜토리얼 >내부를 클릭할 때 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?

내부를 클릭할 때 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-25 12:48:02731검색

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의 드롭다운 숨기기/숨김 이벤트에 의존하는 것은 다음과 같은 이유로 해결책이 아닙니다.

  • 이 두 이벤트 핸들러가 제공하는 이벤트 객체는 클릭된 이벤트를 참조하지 않습니다. 요소 .
  • 드롭다운 메뉴의 내용을 제어할 수 없으므로 플래그 클래스나 속성을 추가할 수 없습니다.

다음은 정상적인 동작에 대한 바이올린 데모와 event.stopPropagation()이 추가된 바이올린 데모입니다.

업데이트

Roman님 답변 감사합니다. 다음과 같은 또 다른 답변도 찾았습니다.

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

위 내용은 내부를 클릭할 때 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.