jquery mobile:如何在页面启动时只创建一次动态内容?

时间:2012-07-18 14:16:35

标签: jquery-mobile

这就是我想要做的事情:

  • 使用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'); });
    }
});

但布局永远不会更新。

如何修改页面,但一开始只一次

2 个答案:

答案 0 :(得分: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");
    });
});

答案 1 :(得分:0)

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

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

就是这样。