드롭다운 메뉴 내부 클릭 시 닫힘 방지
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!