我在头部加载的外部 .js 文件中使用下面的代码来设置并记住是否单击了按钮,如果有,则向其添加新类。
当页面被浏览器强制重新加载时,这可以正常工作,但是当通过 Ajax 加载内容时(这是我 99% 的网站加载内容的方式),它是非常喜怒无常的。
我知道这只是一两个文档准备好的情况,但我无法确定将它们放在哪里。
我试过的..
1)将所有功能包装在一个中$(document).ready(function(){
我什至不确定这是可取的,但无论如何它没有任何区别。
2)包装各种功能,$(document).ready(function(){
但似乎没有任何东西可以使其可靠地工作。
有人可以建议最好的行动方案吗?
干杯;)
function loadInCartBt() {
itemInCart = sessionStorage.inCart;
return itemInCart
? JSON.parse(itemInCart) : [];
}
function saveInCartBt(inCart) {
sessionStorage.inCart = JSON.stringify(inCart);
}
function addbt2Cart(chbuyBt) {
$(chbuyBt).addClass('chbuyincart');
var inCart = loadInCartBt();
inCart.push(chbuyBt.id);
saveInCartBt(inCart);
}
function removeBtFromCart(chbuyBt) {
$(chbuyBt).removeClass('chbuyincart');
var inCart = loadInCartBt();
inCart.pop(chbuyBt.id);
saveInCartBt(inCart);
}
$(function(){
$.each(loadInCartBt(), function(i, chbuyBt){
$('#'+chbuyBt).addClass('chbuyincart');
});
$('.chbuyBt').on('click', function() {
var chbuyBt = this;
if (loadInCartBt().indexOf(chbuyBt.id) < 0) {
addbt2Cart(chbuyBt);
} else {
removeBtFromCart(chbuyBt);
}
});
});
function clearSessionStorage() {
sessionStorage.clear();
}
为清楚起见,这是按钮的 html 的样子:
<div class="chart-buy"><a href="javascript:void(0);" id="tk450" class="chbuyBt" onclick="addToBasket('450','track')"><span class="ch-buy-price">1.39</span></a></div>