0

ボタンがクリックされたかどうかを設定して記憶し、クリックされた場合は新しいクラスを追加するために、ヘッドにロードされている外部 .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>
4

1 に答える 1

0

うまくいかなかったので、上記のコードを local.js という別のファイルに保存し、次のようにページのフッターで呼び出しました。

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

完璧に動作します!

また、もう少し堅牢であるため、sessionStorage を localStorage に変更しました。

誰かが知っていれば、私の元の質問に対する答えが欲しいです。

于 2013-06-17T12:47:27.793 に答える