0

我在头部加载的外部 .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>
4

1 回答 1

0

好的,无法解决,所以最终将上面的代码存储在一个名为 local.js 的不同文件中,并在我的页面的页脚中调用它,如下所示:

<script type="text/javascript" src="js/local.js"></script>

完美运行!

还将 sessionStorage 更改为 localStorage,因为它更健壮。

如果有人知道,仍然想回答我原来的问题。

于 2013-06-17T12:47:27.793 回答