我目前正在尝试从JSON文件动态生成页面。我可以生成页面,但是当我之后访问该页面时,除了后退按钮之外,该页面未被注册。这是我生成页面的代码:
function generateClassPage(dept, cNumber) {
$("body").append('<div data-role="page" data-control-title="' + majorArray[dept] + ' ' + cNumber + '" id=' + dept + 'p' + cNumber + '>');
$('#' + dept + 'p' + cNumber).append('<div data-theme="b" data-role="header"><a data-role="button" data-inline="true" data-direction="reverse" data-rel="back" data-transition="slidedown" data-theme="e" href="#page2" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left">Back</a>');
$('#' + dept + 'p' + cNumber).append('<h3>' + majorArray[parseInt(dept)] + ' ' + cNumber + '</h3>');
$('#' + dept + 'p' + cNumber).append('</div><div data-role="content">');
$('#' + dept + 'p' + cNumber).append('<h3>' + pageParameterArray.name + '</h3>');
$('#' + dept + 'p' + cNumber).append('<div data-controltype="textblock"><p><span><strong>Units</strong>: ' + pageParameterArray.units + '</span></p>');
$('#' + dept + 'p' + cNumber).append('<p><span><strong>Pre-Requisites</strong>: </span></p>');
$('#' + dept + 'p' + cNumber).append('<ul>');
alert(pageParameterArray.prerequisites.length);
if (pageParameterArray.prerequisites.length > 0) {
for (var i = 0; i < pageParameterArray.prerequisites.length; i++) {
$.ajax({
url: 'http://majors.uclastudentmedia.com/classes/',
type: 'GET',
crossDomain: true,
data: {
pk: pageParameterArray.prerequisites[i]
},
dataType: 'json',
success: function (json_3) {
alert("JSON Length = " + json_3.length);
$('#' + dept + 'p' + cNumber).append('<li><span>' + majorArray[parseInt(json_3[0]['fields']['department'])] + ' ' + json_3[0]['fields']['class_number'] + '</span></li>');
}
});
}
}
$('#' + dept + 'p' + cNumber).append('<li><span>n/a</span></li>');
$('#' + dept + 'p' + cNumber).append('</ul>');
$('#' + dept + 'p' + cNumber).append('</div></p></div></div></div>');
alert("Page created!");
$('#' + dept + 'p' + cNumber).page();
}
之后检查HTML页面时,div已正确添加并可以访问,但它缺少所有JQuery移动主题元素。我有什么需要做的来刷新主题吗?谢谢!
答案 0 :(得分:0)
是的,您必须在HTML到位后触发create
事件。这样的事情可以解决问题:
$(document).trigger('create');
请注意,这需要在创建所有HTML后运行,否则将无法正常运行。
答案 1 :(得分:0)
您是否尝试为要附加的页面div分配id属性,然后执行以下操作:
$("#pageid").trigger('create');
直接在该div上使用您指定的ID代替#pageid