如何在不重新加载页面的情况下添加 class
how to add class without reloading page
我需要带有 ping 动画的购物车图标,当超过 0 个项目可用时,它显示购物车 ping,当购物车为空时,它显示正常的购物车图标我得到了我想要的,但问题是它只在用户重新加载页面 有没有办法在不重新加载页面的情况下添加 class
https://prnt.sc/1x1r2ih
https://prnt.sc/1x1r04l
<span class="lnr lnr-cart"></span> <span class="Header__CartCount hotiya"></span> {% if cart.item_count !=0 %}<div class="cart_ping"></div>{%
endif %}
{
key: "_rerenderCart",
value: function(e) {
var t = this,
n = a["default"].nodeListToArray(document.querySelectorAll(".Header__CartDot")),
i = a["default"].nodeListToArray(document.querySelectorAll(".Header__CartCount"));
return n.forEach(function(e) {
0 === t.itemCount ? e.classList.remove("is-visible") : e.classList.add("is-visible")
}), i.forEach(function(e) {
e.textContent = t.itemCount
}), fetch("/cart?view=" + (this.options.drawer ? "drawer" : "ajax") + "×tamp=" + Date.now(), {
credentials: "same-origin",
method: "GET"
}).then(function(n) {
if (t.options.drawer && e) {
var i = new TimelineLite({
onComplete: function() {
n.text().then(function(e) {
t._replaceContent(e)
})
}
});
i.to(e, .5, {
height: 0,
opacity: 0,
ease: Cubic.easeOut
}, 0), 0 === t.itemCount && i.to(t.element.querySelector(".Drawer__Footer"), .5, {
y: "100%",
transition: "none",
ease: Cubic.easeInOut
}, 0)
} else n.text().then(function(e) {
t._replaceContent(e)
})
})
}
我认为 {% if cart.item_count !=0 %}
是问题所在的部分。即使值发生变化,页面也不会重新呈现。相反,试试这个:
<span class="lnr lnr-cart"></span> <span class="Header__CartCount hotiya"></span> <div id="cart_ping" class="cart_ping"></div>
if(cartItems.Count > 0)
{
document.getElementById('cart_ping').style.display = "block";
}
else
{
document.getElementById('cart_ping').style.display = "none";
}
javascript 代码进入 ajax 输出。
在添加购物车成功 API 调用时,需要将购物车动画更改为 ping。如下所示:
cart.classList.add("ping");
如果有人从购物车中移除商品,需要在移除成功事件中移除该商品 class,如下所示:
cart.classList.remove("ping");
注意:确保“ping”CSS class 显示购物车上的圆点图标。
我需要带有 ping 动画的购物车图标,当超过 0 个项目可用时,它显示购物车 ping,当购物车为空时,它显示正常的购物车图标我得到了我想要的,但问题是它只在用户重新加载页面 有没有办法在不重新加载页面的情况下添加 class
https://prnt.sc/1x1r2ih
https://prnt.sc/1x1r04l
<span class="lnr lnr-cart"></span> <span class="Header__CartCount hotiya"></span> {% if cart.item_count !=0 %}<div class="cart_ping"></div>{%
endif %}
{
key: "_rerenderCart",
value: function(e) {
var t = this,
n = a["default"].nodeListToArray(document.querySelectorAll(".Header__CartDot")),
i = a["default"].nodeListToArray(document.querySelectorAll(".Header__CartCount"));
return n.forEach(function(e) {
0 === t.itemCount ? e.classList.remove("is-visible") : e.classList.add("is-visible")
}), i.forEach(function(e) {
e.textContent = t.itemCount
}), fetch("/cart?view=" + (this.options.drawer ? "drawer" : "ajax") + "×tamp=" + Date.now(), {
credentials: "same-origin",
method: "GET"
}).then(function(n) {
if (t.options.drawer && e) {
var i = new TimelineLite({
onComplete: function() {
n.text().then(function(e) {
t._replaceContent(e)
})
}
});
i.to(e, .5, {
height: 0,
opacity: 0,
ease: Cubic.easeOut
}, 0), 0 === t.itemCount && i.to(t.element.querySelector(".Drawer__Footer"), .5, {
y: "100%",
transition: "none",
ease: Cubic.easeInOut
}, 0)
} else n.text().then(function(e) {
t._replaceContent(e)
})
})
}
我认为 {% if cart.item_count !=0 %}
是问题所在的部分。即使值发生变化,页面也不会重新呈现。相反,试试这个:
<span class="lnr lnr-cart"></span> <span class="Header__CartCount hotiya"></span> <div id="cart_ping" class="cart_ping"></div>
if(cartItems.Count > 0)
{
document.getElementById('cart_ping').style.display = "block";
}
else
{
document.getElementById('cart_ping').style.display = "none";
}
javascript 代码进入 ajax 输出。
在添加购物车成功 API 调用时,需要将购物车动画更改为 ping。如下所示:
cart.classList.add("ping");
如果有人从购物车中移除商品,需要在移除成功事件中移除该商品 class,如下所示:
cart.classList.remove("ping");
注意:确保“ping”CSS class 显示购物车上的圆点图标。