Mar*_*ema 75 jquery twitter-bootstrap
我使用bootstrap下拉作为购物车.在购物车中是"删除产品"按钮(链接).如果我单击它,我的shoppingcart脚本将删除该产品,但菜单会消失.反正有办法阻止这种情况吗?我尝试了e.startPropagation,但这似乎不起作用:
<div id="shoppingcart" class="nav-collapse cart-collapse">
<ul class="nav pull-right">
<li class="dropdown open">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Totaal:
€ 43,00</a>
<ul class="dropdown-menu">
<li class="nav-header">Pakketten</li>
<li>
<span class="quantity">1x</span>
<span class="product-name">Test Product </span>
<span class="product-remove"><a class="removefromcart" packageid="4" href="#">x</a>
</span></li>
<li><a href="#">Total: € 43,00</a></li>
<li><a href="/checkout">Checkout</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
正如你可以看到带有class ="dropwdown-toggle"的元素使它成为一个下拉列表.另一个想法是我只是通过编程方式重新打开它.因此,如果有人可以解释我如何以编程方式打开Bootstrap下拉列表,那将会很有帮助!
And*_*ich 94
尝试删除按钮本身的传播,如下所示:
$('.dropdown-menu a.removefromcart').click(function(e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
编辑
以下是上述解决方案的评论演示:
http://jsfiddle.net/andresilich/E9mpu/
相关代码:
JS
$(".removefromcart").on("click", function(e){
var fadeDelete = $(this).parents('.product');
$(fadeDelete).fadeOut(function() {
$(this).remove();
});
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
HTML
<div id="shoppingcart" class="nav-collapse cart-collapse">
<ul class="nav pull-right">
<li class="dropdown open">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Totaal:
€ 43,00</a>
<ul class="dropdown-menu">
<li class="nav-header">Pakketten</li>
<li class="product">
<span class="product-remove"><a class="removefromcart" packageid="2" href="#"><i class="icon-remove"></i></a></span>
<span class="product-name">Test Product </span>
<span class="quantity"><span class="badge badge-inverse">1</span></span>
</li>
<li class="product">
<span class="product-remove"><a class="removefromcart" packageid="2" href="#"><i class="icon-remove"></i></a></span>
<span class="product-name">Test Product </span>
<span class="quantity"><span class="badge badge-inverse">10</span></span>
</li>
<li class="product">
<span class="product-remove"><a class="removefromcart" packageid="2" href="#"><i class="icon-remove"></i></a></span>
<span class="product-name">Test Product </span>
<span class="quantity"><span class="badge badge-inverse">8</span></span>
</li>
<li class="product">
<span class="product-remove"><a class="removefromcart" packageid="2" href="#"><i class="icon-remove"></i></a></span>
<span class="product-name">Test Product </span>
<span class="quantity"><span class="badge badge-inverse">3</span></span>
</li>
<li class="product">
<span class="product-remove"><a class="removefromcart" packageid="2" href="#"><i class="icon-remove"></i></a></span>
<span class="product-name">Test Product </span>
<span class="quantity"><span class="badge badge-inverse">4</span></span>
</li>
<li class="divider"></li>
<li><a href="#">Total: € 43,00</a></li>
<li><a href="/checkout">Checkout</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
Don*_*ghn 33
这个答案只是接受答案的旁注.感谢OP和Andres的问答,它解决了我的问题.然而,后来,我需要在我的下拉列表中使用动态添加的项目.遇到这个问题的任何人也可能会对Andres的变体感兴趣,该解决方案既适用于初始元素,也适用于页面加载后添加到下拉列表中的元素:
$(function() {
$("ul.dropdown-menu").on("click", "[data-keepOpenOnClick]", function(e) {
e.stopPropagation();
});
});
Run Code Online (Sandbox Code Playgroud)
或者,对于动态创建的下拉菜单:
$(document).delegate("ul.dropdown-menu [data-keepOpenOnClick]", "click", function(e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
然后根据您的具体情况,将data-keepOpenOnClick属性放在任何<li>标记或其子元素中的任何位置.例如:
<ul class="dropdown-menu">
<li>
<-- EG 1: Do not close when clicking on the link -->
<a href="#" data-keepOpenOnClick>
...
</a>
</li>
<li>
<-- EG 2: Do not close when clicking the checkbox -->
<input type="checkbox" data-keepOpenOnClick> Pizza
</li>
<-- EG 3: Do not close when clicking the entire LI -->
<li data-keepOpenOnClick>
...
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
小智 12
简而言之,你可以试试这个.它对我有用.
<span class="product-remove">
<a class="removefromcart" onclick=" event.stopPropagation();" packageid="4" href="#">x</a>
</span>
Run Code Online (Sandbox Code Playgroud)
在bootstrap 4上,当您在下拉菜单中放置一个表单时,在其中单击时它不会折叠。
因此,这对我来说最有效:
<div class="dropdown">
<!-- toggle button/link -->
<div class="dropdown-menu">
<form>
<!-- content -->
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
show当您为菜单提供类时,菜单就会打开,因此您可以自己实现该功能,而无需使用data-toggle="dropdown".
<div class="dropdown">
<button class="btn btn-secondary" type="button">
Dropdown button
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
<div id="overlay"></div>
Run Code Online (Sandbox Code Playgroud)
#overlay{
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 1000;
display: none;
}
#overlay.show{
display: block;
}
.dropdown-menu{
z-index: 1001;
}
Run Code Online (Sandbox Code Playgroud)
$('button, #overlay').on('click', function(){
$('.dropdown-menu, #overlay').toggleClass('show')
})
Run Code Online (Sandbox Code Playgroud)
在codepen中尝试一下。
| 归档时间: |
|
| 查看次数: |
71528 次 |
| 最近记录: |