【问题标题】:Adding ListView Dynamically Wont Render jQuery Mobile CSS动态添加 ListView 不会呈现 jQuery Mobile CSS
【发布时间】:2016-02-19 14:22:54
【问题描述】:

我正在将带有列表项的列表视图添加到 jQuery 移动可折叠网格中。这是我的 Default.js 代码

$(document).ready(function () {


    var appNames = getApprovalNames(phone, pin);

    for (var i = 0; i < appNames.length; i++) {

        var header = '<h3>' + appNames[i].Name + '</h3>';

        var ulHeader = '<ul data-role="listview" id="myAppsSectionGridTable">';

        var approvals = getApprovalInformation(phone, pin, appNames[i].Name);

        var listArray = new Array();


        for (var j; j < approvals.length; j++) {

            var link = '<li><a href="' + 'NickData' + '"' + '><img src="';
            var detailHeader = '" alt="" class="ui-li-icon"/>' + '<h3>' + 'NickData' + '</h3>';
            var detail = '<p>' + 'NickData' + '</p>' + '</a>' + '</li>';

            var list_item = link + detailHeader + detail;

            listArray.push(list_item);

        }

     var entire_list = null;

     for (var y in listArray) {

        entire_list = entire_list + listArray[y];

    }

    $('#accMain').append(header + ulHeader + entire_list + '</ul>');

    }   

});

此代码在屏幕上显示数据,但屏幕上的任何位置都没有 jQuery mobile css。此外,当我在源代码中查看它时,我没有在其中看到我新创建的标记。我是在错误的事件中添加这个还是什么?如果我只是对页面中的标记进行硬编码,一切正常。它与动态添加 jQuery 移动标记有关。

<asp:Content ID="HContent" ContentPlaceHolderID="HeadContent" runat="server">

<script src="Js/Pages/Default.js" type="text/javascript"></script>

</asp:Content>
<asp:Content ID="THContent" ContentPlaceHolderID="TopHeaderContent" runat="server">
    <h1>
        Applications</h1>
</asp:Content>
<asp:Content ID="MContent" ContentPlaceHolderID="MainContent" runat="server">

 <div id="accMain" data-role="collapsible" data-inset="false" data-collapsed="false">

 </div>

</asp:Content>

此母版页正文是..

<body>

<div data-role="page" data-theme="b">

    <div data-role="header" data-position="fixed">

         <asp:ContentPlaceHolder ID="TopHeaderContent" runat="server"></asp:ContentPlaceHolder>


    </div><!-- /header -->

    <div data-role="content">   

 <asp:ContentPlaceHolder ID="MainContent" runat="server"></asp:ContentPlaceHolder>

    </div><!-- /content -->

    <div data-role="footer" data-position="fixed">
    <asp:ContentPlaceHolder ID="FooterContent" runat="server"></asp:ContentPlaceHolder>


    </div><!-- /footer -->

</div><!-- /page -->

</body>

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    你需要调用listview方法

    $('#mylist').listview()
    

    如果您只是向现有列表视图添加内容,则调用 refresh 方法

    $('#mylist').listview('refresh');
    

    有时您可能需要在 pageshow 事件中调用它,类似于以下内容

     $('#myPage').on('pageshow', function() {
         try 
        {
           $('#mylist').listview('refresh');
        } catch (e) {
         $('#mylist').listview();
        }
    });
    

    如果您要添加多个需要增强的小部件/项目,那么您可以尝试触发创建事件

    $('#myPage').trigger('create');
    

    【讨论】:

    • 在文档准备好页面后我是否触发 pageshow 事件?
    • JQM 触发pageshowevent,我给出的示例只是绑定到它,只要您的页面已经在DOM 中,您可以在添加之前绑定到它列表。
    • collapsiblelist 也不呈现。我也必须以某种方式刷新吗??
    • 如果您有不同的项目需要 JQM 增强,请在将它们添加到您的页面后尝试触发 create 方法,例如 $('#myPage').trigger('create');,这应该告诉 JQM 增强页面上的所有内容。
    • 我尝试了刷新,但得到了相同的结果,数据在那里但标记没有正确呈现
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2011-11-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多