0

最大バスケット時間が 20 分の e コマース サイトがあります。次のように残り時間を表示するために、JSで簡単なカウンターを作成しました。

 function basketCounter() {
    var minutes = Math.floor(count / 60);
    var sec = count - minutes * 60;
    if (sec < 10) {
        sec = '0' + sec;
    }
    console.log("hello");
    $(".temps_restant").html("reste: " + minutes + " : " + sec );
    $("#tunnel_panier_temps").html("" + minutes);
    if (count == 0) {
        window.location = '{{serverRequestUri}}flush_panier/1/';
    }
    count--;
}

そして本体で:

var count = {{panierTmp.lifetime - now}};
$(document).bind('pageinit', function() {
    $("img.lazy").unveil();
    if (count > 0) {
        setInterval('basketCounter()', 1000);
    }
});

ajax を使用せずにサイトをナビゲートすると、問題なく動作します。しかし、JQMでajaxをナビゲートしようとすると、カウンターは毎回再実行され、2秒ごとに高速化され、2回戻ると3秒ごとになります..

私は解決策を見つけることができません..

4

2 に答える 2

0

次のことを試すことができます。

1) 非表示のページを削除してみてください

<head>
    document.on('pagehide', function(e) {
       $(e.target).remove();
    });
</head>

2) ページ イベントをアンバインドしてバインドします。

$(document).off('pageinit').on('pageinit', ....
于 2013-08-20T20:34:00.657 に答える