Ajax Woocommerce中未从购物车中删除的最后一项

Ajax Woocommerce中未从购物车中删除的最后一项,ajax,woocommerce,cart,Ajax,Woocommerce,Cart,我无法从购物车中删除最后一项。我将几个产品添加到购物车-删除所有项目,但最后一个不是。Ajax工作,显示一条消息,表明产品已从购物车中删除,但从视觉上看,它并没有消失。刷新页面后,购物车是空的。我在我们的一个网站上也遇到了同样的问题。我一直在关注/woocommerce/assets/js/frontend/cart.js中的javascript,我注意到下面一行代码$('.woocommerce-cart-form_ucontents')。最近('.woocommerce')。replaceW

我无法从购物车中删除最后一项。我将几个产品添加到购物车-删除所有项目,但最后一个不是。Ajax工作,显示一条消息,表明产品已从购物车中删除,但从视觉上看,它并没有消失。刷新页面后,购物车是空的。

我在我们的一个网站上也遇到了同样的问题。我一直在关注
/woocommerce/assets/js/frontend/cart.js
中的javascript,我注意到下面一行代码
$('.woocommerce-cart-form_ucontents')。最近('.woocommerce')。replaceWith($cart_html)替换购物车页面中的所有购物车内容

很可能您已经覆盖了默认的woocommerce购物车模板,并从自定义模板中删除了类
.woocommerce-cart-form\u contents
,因此html不能被javascript替换

您有两个选项来解决此问题:

选项1: 尝试在
cart.php
模板中包含
.woocommerce-cart-form\u内容

选项2: 如果您不想添加该类,woocommerce会在购物车清空后触发javascript事件
wc_cart_清空
。因此,您可以在主题的javascript中使用以下代码,以确保触发时从购物车页面清空DOM元素:

    /**
     * When Cart has been emptied we need to make sure that cart form and cart collaterals in /cart page are removed.
     *
     * @param {Event} e
     */
    function cartEmptied(e) {
        //The below 2 elements can be changed according to the classes you use in your custom cart template
        var cartForm = $('.woocommerce-cart-form');
        var cartCollaterals = $('.cart-collaterals');

        if (cartForm.length > 0) {
            cartForm.remove();
        }

        if (cartCollaterals.length > 0) {
            cartCollaterals.remove();
        }
    }
    $(document.body).on('wc_cart_emptied', cartEmptied);