Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquerymobile动态添加的页面没有主题_Javascript_Jquery_Html_Jquery Mobile - Fatal编程技术网

Javascript jquerymobile动态添加的页面没有主题

Javascript jquerymobile动态添加的页面没有主题,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我目前正在尝试从JSON文件动态生成页面。我可以生成该页面,但当我随后访问该页面时,该页面没有主题,只保留了“后退”按钮。以下是生成页面的代码: function generateClassPage(dept, cNumber) { $("body").append('<div data-role="page" data-control-title="' + majorArray[dept] + ' ' + cNumber + '" id=' + dept + 'p' + cNum

我目前正在尝试从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>:&nbsp;</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();
}
功能生成分类页(部门,编号){
$(“正文”)。附加(“”);
$('#'+dept+'p'+cNumber);
$('#'+dept+'p'+cNumber).append('+majoraray[parseInt(dept)]+'+cNumber++');
$('#'+dept+'p'+cNumber);
$('#'+dept+'p'+cNumber).append(''+pageParameterArray.name+'');
$('#'+dept+'p'+cNumber).附加('单位: ' + pageParameterArray.units+'

'); $(“#”+dept+“p”+cNumber).附加(“先决条件:

”); $(“#”+dept+“p”+cNumber).append(“
    ”); 警报(pageParameterArray.Premissions.length); 如果(pageParameterArray.Premissions.length>0){ 对于(变量i=0;i”+majoraray[parseInt(json_3[0]['fields']['department'])]+''+json_3[0]['fields']['class_number']+''); } }); } } $(“#”+dept+“p”+cNumber).append(“
  • n/a
  • ”); $(“#”+dept+“p”+cNumber).append(“
”); $(“#”+dept+“p”+cNumber).append(“

”); 警报(“页面已创建!”); $('#'+dept+'p'+cNumber.page(); }

之后检查HTML页面时,正确添加了div并可以访问它,但它缺少所有JQuery mobile主题元素。我需要做些什么来更新主题吗?谢谢

是的,您必须在HTML就位后触发
create
事件。像这样的事情应该可以做到:

$(document).trigger('create');

注意:这需要在创建完所有HTML后运行,否则它将无法正常工作。

是否尝试将id属性分配给要追加的页面div,然后执行以下操作:

$("#pageid").trigger('create');

直接在该div上使用指定的id代替#pageid

尝试
.trigger('pagecreate')
而不是
.page()
。何时/如何注入新页面?单击或事件触发时?感谢您的回复!我有一个按钮绑定到一个点击事件,它会启动另一个函数,最终启动这个函数。我想页面应该附加到页面容器中。请尝试
$.mobile.pageContainer.append()
或pageContainer,小写字母C。仍然没有。是否有其他更有效的方法来创建新页面?如果您使用firebug,是否可以在DOM enhanced中查看页面?感谢您的响应。我在附加所有HTML之后使用该命令,但页面仍然是空的unthemed@user2884505可能是调用该方法时,它还没有完成HTML的呈现。尝试从浏览器控制台运行该命令。我在控制台中尝试了触发器('create')和触发器('pagecreate'),但两者似乎都不起作用。是的,我尝试过,运气不好。只是检查一下,我应该将所有页面元素附加到页面div而不是body,对吗?这一行中似乎有一个额外的

:$(“#”+dept+“p”+cNumber);这可能会影响增强标记。除此之外,您的附加页面对我来说还不错。使用data role=“page”将页面元素添加到页面div是正确的,您是这样添加到该页面的。创建事件可以在任何元素上触发,在您的情况下,它将是“页面”,因为您希望增强附加的整个页面。请查看此处以了解有关此项的更多详细信息: