>  기사  >  웹 프론트엔드  >  위임된 이벤트 핸들러 기능을 유지하면서 내부 클릭 시 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?

위임된 이벤트 핸들러 기능을 유지하면서 내부 클릭 시 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-28 00:14:29849검색

How to Prevent Bootstrap Dropdowns from Closing on Internal Clicks While Maintaining Delegated Event Handler Functionality?

드롭다운 관리: 내부 클릭 시 메뉴 폐쇄 방지

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">
          <!-- Carousel content -->
        </div>
      </li>
    </ul>
  </li>
</ul></code>
<code class="javascript">$('ul.dropdown-menu.mega-dropdown-menu').on('click', function(event){
    // The event won't be propagated up to the document NODE and 
    // therefore delegated events won't be fired
    event.stopPropagation();
});</code>

이벤트 핸들러를 ul.dropdown-menu.mega-dropdown-menu에 연결하여 클릭 시 메뉴가 닫히지 않도록 하려고 합니다. 그 안에. 그러나 캐러셀 컨트롤과 같은 요소에 대해 문서 객체에 등록된 위임된 이벤트 핸들러는 무효화되어 이벤트를 트리거하지 못하게 됩니다.

해결책:

이 문제를 해결하려면 문제가 발생하면 다음 코드를 사용할 수 있습니다.

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

$(document).on('click', ...)을 사용하면 이벤트 핸들러가 전체 문서 개체에 연결되어 있는지 확인할 수 있습니다. 이를 통해 위임된 이벤트 핸들러가 올바르게 작동하도록 허용하면서 드롭다운 메뉴 내의 클릭을 차단할 수 있습니다.

위 내용은 위임된 이벤트 핸들러 기능을 유지하면서 내부 클릭 시 부트스트랩 드롭다운이 닫히는 것을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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