1

これが私がやりたいことです:

  • Ajax を使用してバスケットをロードする
  • 「待機」メッセージを表示
  • ロードしたら、バスケットをリフレッシュします。

関数を使用しようとするとpageinit

$(document).bind('pageinit', function(evt) {
    console.log(evt);
}

コンソール ログは、29 回呼び出されたことを示しています。

すべてが 1 つの HTML ページにあり、$.mobile.changePage()ページを変更するために使用しています。だから私はこのハックを試しました:

$(document).bind('pagebeforeshow', function(evt, pg) {
    if (pg.prevPage.length==0) {
        /* first page = code executed once */
        var pg = $('#page-basket'),
            footer = pg.children( ":jqmData(role=footer)" );
        footer.hide().trigger('updatelayout');
        AjaxGetBasket( function(data) { console.log('ajax basket ok'); });
    }
});

ただし、レイアウトは更新されません。

ページを最初に一度だけ変更するにはどうすればよいですか?

4

2 に答える 2

0

が初期化pageinitされたときにのみ実行されるように、イベントハンドラーを委任してみてください。#page-basket

$(document).on("pageinit", "#page-basket", function() {
    $(this).children(":jqmData(role=footer)").hide().trigger("updatelayout");
    AjaxGetBasket(function(data) {
        console.log("ajax basket ok");
    });
});
于 2012-07-18T14:23:33.437 に答える
0

問題が解決したかどうかはわかりませんが、質問で説明されているのと同じ状況にあり、関数をページ作成イベントにバインドする問題を解決しました:

$(document).bind("pagecreate", function(e){
   // call ajax and update the DOM of first 'page'
});

それだけです。

于 2012-12-10T11:15:56.303 に答える