मेरे पास ट्विटर बूटस्ट्रैप ड्रॉपडाउन मेनू है। जैसा कि सभी ट्विटर बूटस्ट्रैप उपयोगकर्ता जानते हैं, ड्रॉपडाउन मेनू क्लिक पर बंद हो जाता है (यहां तक कि इसके अंदर क्लिक करके भी)।
इससे बचने के लिए, मैं ड्रॉपडाउन मेनू पर क्लिक इवेंट हैंडलर को आसानी से संलग्न कर सकता हूं और केवल प्रसिद्ध जोड़ सकता हूं 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>
यह आसान और एक बहुत ही सामान्य व्यवहार दिखता है, हालांकि, और चूंकि carousel-controls
(साथ ही carousel indicators
) घटना संचालकों को document
ऑब्जेक्ट के लिए सौंप दिया जाता है, click
इन तत्वों ( प्रचलित / अगले नियंत्रण, ...) पर घटना को "अनदेखा" किया जाएगा।
$('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();
});
ट्विटर बूटस्ट्रैप ड्रॉपडाउन hide
/ hidden
घटनाओं पर भरोसा करना निम्नलिखित कारणों से समाधान नहीं है:
- दोनों ईवेंट हैंडलर के लिए प्रदान की गई ईवेंट ऑब्जेक्ट क्लिक किए गए तत्व का संदर्भ नहीं देता है
- मेरे पास ड्रॉपडाउन मेनू सामग्री पर नियंत्रण नहीं है इसलिए एक
flag
वर्ग या विशेषता जोड़ना संभव नहीं है
इस बेला सामान्य व्यवहार है और इस बेला है के साथ event.stopPropagation()
जोड़ा गया।
अपडेट करें
रोमन को उनके जवाब के लिए धन्यवाद । मुझे एक जवाब भी मिला जो आप नीचे पा सकते हैं ।
event propagation
बंद होने के बाद से स्लाइड नहीं किया ।