我遇到了jquery停止传播的问题。 要在我点击除购物车模式以外的页面时关闭购物车模式,我必须这样做:
$('html').click(function() {
$('.cart-block').css('display','none');
});
$('.mycart, .cart-block').click(function(event){
event.stopPropagation();
});
但我有一个问题,我有一个AJAX调用来删除我的购物车div(cart-block)中的一个项目,但停止传播正在停止该事件。
$(document).on('click', '.deleteItem', function() {
//ajax call
});
有人可以帮助我吗? 非常感谢 (对不起我的英文)
编辑:HTML结构 //按钮购物车
<div class="center cart mycart" >
//icon and cart item counter
</div>
<div id="cartcaption" class="cart-block">
//modal : content of the cart
<div class="productsPanier">
<span id="{{$cart->rowId}}" class="deleteItem">delete</span>
</div>
</div>
答案 0 :(得分:0)
而不是你正在做什么(用一个停止传播绑定2个处理程序),只需绑定一个处理程序并检查事件的目标是否具有类.cart-block
这样的事情:
$('html').click(function(event) {
if (!$(event.target).hasClass('cart-block'))
$('.cart-block').css('display','none');
});
删除以下部分
$('.mycart, .cart-block').click(function(event){
event.stopPropagation();
});
您的活动现在将正确宣传并显示:无;&#39;如果您在cart-block元素中单击
,则无法添加到购物车区块编辑:如果最外层的课程名为&#39; mycart&#39;,您可以尝试这样:
$('html').click(function(event) {
if (!($(event.target).closest('.mycart').length))
$('.cart-block').css('display','none');
});
这样做的目的是检查点击的目标元素是否包含有“&mycart&#39;”类的父级。此解决方案假设您在购物车内点击的任何内容都有一个带有“mycart”类的容器。显然,如果没有看到你的DOM,我不能确定这会解决你的具体情况。如果它与我的假设不同,它至少应该指向正确的方向。