我有一个图标,当单击该图标时,它使用.remove()从DOM中删除它所在的段落。这些段落都具有.cart-item类。
在删除段落之后,立即创建一个包含所有带有.cart-item类的段落的对象,然后检查该对象的.length以查看其是否为零。
当删除一个段落时,似乎没有更新.length属性。例如,如果有2个符合条件的段落,而我删除了其中一个,则对长度的检查将返回2,而不是1。
这是我的代码。
$("#cart").on("click", ".cart-delete-item", function () {
$(this).parent().remove();
var items = $(".cart-item");
if ($(items).length === 0) {
$("#checkout-btn").addClass("disabled");
$("#checkout-btn").prop("disabled", true);
}
})
HTML看起来像这样:
<p class="cart-item">
<small><i class="fa fa-trash text-danger mr-2 cart-delete-item"></i>1 T-shirt @ $20</small>
</p> –
答案 0 :(得分:2)
$(this).parent()
是<small>
元素,而不是<p class="cart-item">
,因此您不是从购物车中删除商品,而是从商品中删除姓名和删除按钮
使用$(this).closest(".cart-item").remove()
。这样您就不必依赖特定的嵌套级别了。