我正在使用jQuery mobile,目前正在使用下面的代码动态构建菜单。我现在需要为下一步创建菜单项的实际页面。我一直在关注jQuery Mobile和Dynamic Page Generation,并认为这是我可以用来实现这一目标的。我已经阅读了动态页面生成文档,并且不明白我如何将其融入我当前的代码中,或者即使它适合我需要实现的目标。
我可以在下面看到我在构建主页的菜单输出时已经拥有ID和页面名称等,有人可以向我展示一个示例,说明我现在如何使用jquery为这些菜单项动态构建所需的html页面?谢谢。
$.each(siteData["pages"], function(i,v) {
$.mobile.activePage.find('[data-role=content]').append('' +
'<a href='+ v["id"] + ' data-role="button">' + v["name"] + '</a>').trigger('create');
// NOW I HAVE THE MENU LETS CREATE THE ACTUAL PAGES INSIDE HERE TOO
});
在navlist中创建的当前标记菜单项:
<div data-role="page" id="index">
<div data-theme="a" data-role="header">
</div>
<div data-role="content" class="navlist">
</div>
<div data-role="footer">
</div><!-- /footer -->
</div>
所以现在我需要使用jquery为每个项目生成标记。
更新:基于建议,我尝试了类似的东西,但它不起作用。
$.each(siteData["pages"], function(i,v) {
$.mobile.activePage.find('[data-role=content]').append('' +
'<a href='+ v["id"] + ' data-role="button">' + v["name"] + '</a>').trigger('create');
// Prepare your page structure
var newPage = $("<div data-role='page' id=v[id]><div data-role=header>" +
"<a data-iconpos='left' data-icon='back' href='#' data-role='button' " +
"data-rel='back'>Back</a><h1>Dynamic Page</h1></div><div data-role=content>Stuff here</div></div>");
// Append the new page info pageContainer
newPage.appendTo($.mobile.pageContainer);
// Move to this page by ID '#page'
$.mobile.changePage('#'+v["id"]);
});
答案 0 :(得分:9)
这是一种动态创建新页面的简单方法。
// Prepare your page structure
var newPage = $("<div data-role='page' id='page'><div data-role=header><a data-iconpos='left' data-icon='back' href='#' data-role='button' data-rel='back'>Back</a><h1>Dynamic Page</h1></div><div data-role=content>Stuff here</div></div>");
// Append the new page into pageContainer
newPage.appendTo($.mobile.pageContainer);
// Move to this page by ID '#page'
$.mobile.changePage('#page');
答案 1 :(得分:0)
如果您想要使用新内容重新创建页面,则会出现兑现问题。 所以你必须这样做......
var $i = 0;
$('#test').on('click', function () {
$i++;
alert("I="+$i);
// Prepare your page structure
var newPage = $("<div data-role='page' id='page'><div data-role=header><a data-iconpos='left' data-icon='back' href='#' data-role='button' data-rel='back'>Back</a><h1>Dynamic Page</h1></div><div data-role=content>Stuff here = " + $i + "</div></div>");
// Append the new page into pageContainer
newPage.appendTo($.mobile.pageContainer);
// Move to this page by ID '#page'
$.mobile.changePage('#page');
});
$(document).on('pagehide', '#page', function(){
$(this).remove();
});
&#13;
<a data-role=button id=test>test</a>
&#13;