jQuery .remove()不会更改.length

时间:2019-01-08 21:25:27

标签: jquery

我有一个图标,当单击该图标时,它使用.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> – 

1 个答案:

答案 0 :(得分:2)

$(this).parent()<small>元素,而不是<p class="cart-item">,因此您不是从购物车中删除商品,而是从商品中删除姓名和删除按钮

使用$(this).closest(".cart-item").remove()。这样您就不必依赖特定的嵌套级别了。