1

这是我想要做的:

  • 使用 Ajax 加载篮子
  • 显示“等待”消息
  • 加载后,刷新篮子。

当我尝试使用pageinit功能时:

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

控制台日志显示它被调用了 29 次!

一切都在一个 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

我不明白您的问题是否已解决,但我处于问题中解释的相同情况,并且我已经解决了将函数绑定到 pagecreate 事件的问题:

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

就这样。

于 2012-12-10T11:15:56.303 回答