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 중국어 웹사이트의 기타 관련 기사를 참조하세요!