Saya memiliki menu tarik-turun Bootstrap Twitter. Seperti yang diketahui semua pengguna Twitter Bootstrap, menu dropdown ditutup saat klik (bahkan mengklik di dalamnya).
Untuk menghindari ini, saya dapat dengan mudah melampirkan pengendali event klik pada menu dropdown dan cukup menambahkan yang terkenal 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>
Ini terlihat mudah dan merupakan perilaku yang sangat umum, dan karena carousel-controls
(dan juga carousel indicators
) penangan event didelegasikan ke document
objek, click
peristiwa pada elemen-elemen ini ( kontrol selanjutnya , ...) akan "diabaikan".
$('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();
});
Mengandalkan dropdown hide
/ hidden
acara Bootstrap Twitter bukanlah solusi karena alasan berikut:
- Objek acara yang disediakan untuk kedua penangan acara tidak memberikan referensi ke elemen yang diklik
- Saya tidak memiliki kontrol atas konten menu dropdown sehingga menambahkan
flag
kelas atau atribut tidak mungkin
Biola ini adalah perilaku normal dan biola ini event.stopPropagation()
ditambahkan.
Memperbarui
Terima kasih kepada Roman atas jawabannya . Saya juga menemukan jawaban yang dapat Anda temukan di bawah .
event propagation
telah dihentikan.