ボタンがクリックされたかどうかを設定して記憶し、クリックされた場合は新しいクラスを追加するために、ヘッドにロードされている外部 .js ファイルで以下のコードを使用しています。
これは、ページがブラウザによって強制的にリロードされた場合は正常に機能しますが、コンテンツが Ajax を介して読み込まれる場合は非常に気まぐれです (これは、私のサイトの 99% がコンテンツを読み込む方法です)。
これは 1 つまたは 2 つのドキュメントの準備ができている場合にすぎないことはわかっていますが、それらをどこに置くかを考え出すのに苦労しています。
私が試したこと..
1)すべての機能を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>