导航页面后,JQuery Mobile丢失了所有样式

spr*_*t12 9 javascript css ajax jquery-mobile

我经历了一个严重的头痛,在过去的几个小时里,我无法弄清楚为什么当我在页面之间轻弹(由ajax动态加载)时,样式都会发生.

我已经在网上阅读了几十篇关于此的帖子,并尝试过.page()触发器("刷新")触发器创建等等.

第1页有一个列表,点击该项后,它会获取另一个列表的完整内容并将它们放入DOM中.

JQuery版本(移动1.1rc2 - 但与1.0.1稳定相同的问题):

<script src="scripts/ajax.js"></script>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css">
Run Code Online (Sandbox Code Playgroud)

在初始列表中单击此链接:

javascript:GetGarageList("G9236")
Run Code Online (Sandbox Code Playgroud)

触发:

// show garages for factor
function GetGarageList(accNo) {
    $.mobile.showPageLoadingMsg("b", "Loading", false);
    $.ajax({
        type: "POST",
        url: "Default.aspx/GetGarageList",
        data: "{'accNo':'" + accNo + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            $("#garageList").html(msg.d);
            $.mobile.changePage("#garageList");
        },
        error: function () {
            ShowError("Error :(");
        },
        complete: function () {
            $.mobile.hidePageLoadingMsg();
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

在第一次加载时,第二页看起来很完美:

在此输入图像描述

但是当我向上按回按钮时.然后点击其他链接:

javascript:GetGarageList("G9336")
Run Code Online (Sandbox Code Playgroud)

我搞砸了看法:

在此输入图像描述

请帮忙!

编辑:

其他人使用.trigger("创造"); 并说他们解决了这个问题...但每次我把它添加到我的代码中就像这样:

$("#garageList").html(msg.d).trigger("create");
Run Code Online (Sandbox Code Playgroud)

要么

$("#garageList").html(msg.d);
$("#garageList").trigger("create");
Run Code Online (Sandbox Code Playgroud)

它只是给了我一个装载旋转器永远.

编辑2:

根据Barnes的建议,我已经改变了html:

    <%--Garage List--%>
    <div data-role="page" id="garageList" data-add-back-btn="true" data-theme="a">
        <div data-role='header' data-position='fixed'>
            <h1>Garages</h1>
            <a href='index.html' data-icon='plus' data-iconpos='notext' class='ui-btn-right' data-theme='b'></a>
        </div>
        <div data-role='content' id="abc">
            <ul data-role='listview' id='xyz' data-filter='true' data-filter-theme='a' data-filter-placeholder='search name or account no...' data-split-icon='info' data-split-theme='a'>

/// --> new content goes here... as simply many <li> items.

</ul>
        </div> <!-- /content -->
    </div> <!-- /page -->
Run Code Online (Sandbox Code Playgroud)

然后我尝试(在ajax成功):

            $("#xyz").empty();
            $("#xyz").html(msg.d);
            $("#abc").listview("refresh");
            $.mobile.changePage("#garageList");
Run Code Online (Sandbox Code Playgroud)

            $("#xyz").html(msg.d);
            $("#xyz").listview("refresh");
            $.mobile.changePage("#garageList");
Run Code Online (Sandbox Code Playgroud)

这是msg.d的一些示例输出:

"<li><a href='javascript:GetGarageDetails(16267)'><h3>A KETCHEN MOTOR ENGINEERS</h3><p><strong>MID LOTHIAN</strong></p></a><a href="javascript:GetFactorDetails('16267')"></a></li>

<li><a href='javascript:GetGarageDetails(16328)'><h3>G.A.AUTOS</h3><p><strong></strong></p></a><a href="javascript:GetFactorDetails('16328')"></a></li>

<li><a href='javascript:GetGarageDetails(16262)'><h3>GARRY HENDERSON MOTOR ENGINEERS</h3><p><strong>WEST LIMTON</strong></p></a><a href="javascript:GetFactorDetails('16262')"></a></li>

<li><a href='javascript:GetGarageDetails(16264)'><h3>LEADBURN GARAGE LTD</h3><p><strong>PEELBLESHIRE</strong></p></a><a href="javascript:GetFactorDetails('16264')"></a></li>

<li><a href='javascript:GetGarageDetails(16315)'><h3>LOTHIAN MOTORS</h3><p><strong></strong></p></a><a href="javascript:GetFactorDetails('16315')"></a></li>

"
Run Code Online (Sandbox Code Playgroud)

和其他变化,但它仍然不想玩(微调器继续刷新)...虽然它改善了一点(当我刷新时):

在此输入图像描述

小智 15

这一直在解决我的所有问题.

$('...').trigger('create');
Run Code Online (Sandbox Code Playgroud)

您只需要找到放入选择器的正确元素.

对我来说,这些线路起到了作用:

$(document).bind('pagechange', function() {
  $('.ui-page-active .ui-listview').listview('refresh');
  $('.ui-page-active :jqmData(role=content)').trigger('create');
});
Run Code Online (Sandbox Code Playgroud)

  • 在div上使用jQuery的"append"方法时,我正在失去样式.在我追加的元素上触发create事件,有助于在jquery移动视图中添加所有css样式.谢谢! (3认同)