-1

我正在使用一个 MVC js lib (emberjs),它将动态创建和更改页面(视图)。如何使用 jQuery Mobile 手动触发页面创建?

这是我的 jsFiddle - http://jsfiddle.net/mattkime/Aczye/3/

创建一个带有页眉和页脚的 jQuery Mobile 页面。在 1 秒的 setTimeout 之后,该页面从 DOM 中移除并插入新内容但无法显示。你会看到我失败的代码。

(注意,路由已关闭,因为它由 ember 处理)

如何让新标记显示为 jQuery Mobile 增强页面?

代码:

/** disables jQM routing **/
$(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;
});

// removes hidden pages
$('div[data-role="page"]').live('pagehide', function (event, ui) {
    $(event.currentTarget).remove();
});


var pageTwo = '<div id="pageTwo" data-role="page"><div data-role="header"><h1>header2</h1></div> <div data-role="content">...</div><div data-role="footer" data-position="fixed"><h1>footer2</h1></div></div>';

setTimeout(function(){
    $('#pageOne').remove();
    $('body').append(pageTwo);
    $('#pageTwo').page();
    //alert($('#pageTwo').length);
    //$.mobile.changePage($('#pageTwo'));
},1000);

​</p>

4

1 回答 1

2

Don't remove page 1, otherwise it won't be possible to transition from it to page 2.

http://jsfiddle.net/Aczye/4/

/** disables jQM routing **/
$(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;
});

// removes hidden pages
$(document).delegate('div[data-role="page"]', 'pagehide', function (event, ui) {
    $(event.currentTarget).remove();
});


var pageTwo = '<div id="pageTwo" data-role="page"><div data-role="header"><h1>header2</h1></div> <div data-role="content">...</div><div data-role="footer" data-position="fixed"><h1>footer2</h1></div></div>';

setTimeout(function(){
    //$('#pageOne').remove();
    $('body').append(pageTwo);
    $.mobile.changePage("#pageTwo");
    //alert($('#pageTwo').length);
    //$.mobile.changePage($('#pageTwo'));
},1000);

Edit: updated to using .delegate for futureproofing. left .bind due some jQuery mobile versions still requiring older versions of jquery.

于 2012-08-14T20:40:49.073 回答