如何使用 jQuery Mobile 手动触发页面创建

How can I manually trigger page creation with jQuery Mobile?

本文关键字:创建 何使用 jQuery Mobile      更新时间:2023-09-26

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

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

将创建一个带有页眉和页脚的 jQuery Mobile 页面。在 1 秒的设置超时后,该页面将从 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);

不要删除第 1 页,否则无法从第 2 页过渡到第 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);

编辑:更新为使用.delegate进行未来证明。 由于某些jQuery移动版本仍然需要旧版本的jquery,因此.bind

保留。