Jquery .remove() 不会改变 .length

标签 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> – 

最佳答案

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

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

关于Jquery .remove() 不会改变 .length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099940/

相关文章:

jquery - IE 10 不显示模式。似乎是 jQuery 1.7.1 的动画问题

jquery 简单确认对话框

jquery - Bootstrap 3.0 导航下拉菜单不起作用?

javascript - 无法使用 jquery 按类访问嵌套 <p> 元素

javascript - 为什么 TableSorter 插件不根据输入显示结果?

javascript - jquery 使用带有循环的延迟

javascript - 如何通过滚动切换大小写

jquery - 如何从 Reddit API 加载更多页面?

javascript - 左上角 Logo 滚动到屏幕停止

Javascript - 从现在起 30 天后设置日期