Ich habe ein Twitter Bootstrap Dropdown-Menü. Wie alle Twitter Bootstrap-Benutzer wissen, wird das Dropdown-Menü beim Klicken geschlossen (sogar beim Klicken).
Um dies zu vermeiden, kann ich einfach einen Klickereignishandler in das Dropdown-Menü einfügen und einfach den berühmten hinzufügen event.stopPropagation().
<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>
Dies sieht jedoch einfach aus und ist ein sehr häufiges Verhalten. Da carousel-controls(sowie carousel indicators) Ereignishandler an das documentObjekt delegiert werden, wird das clickEreignis für diese Elemente ( vorherige / nächste Steuerelemente, ...) "ignoriert".
$('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();
});
Das Verlassen auf Twitter Bootstrap Dropdown hide/ hiddenEvents ist aus folgenden Gründen keine Lösung:
- Das bereitgestellte Ereignisobjekt für beide Ereignishandler verweist nicht auf das angeklickte Element
- Ich habe keine Kontrolle über den Inhalt des Dropdown-Menüs, daher ist das Hinzufügen einer
flagKlasse oder eines Attributs nicht möglich
Diese Geige ist das normale Verhalten und diese Geige ist mit event.stopPropagation()hinzugefügt.
Aktualisieren
Vielen Dank an Roman für seine Antwort . Ich habe auch eine Antwort gefunden, die Sie unten finden können .
event propagationgestoppt wurde.