ajax请求后重新初始化Jquery Mobile的所有元素?

时间:2014-02-27 13:03:33

标签: jquery html css jquery-mobile

我有以下页面,

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" href="<%= ResolveUrl("~/css/jquery.mobile-1.3.0.min.css") %>" />
</head>
<body>
    <form id="form1" runat="server">
    <div>  
         <div data-role="page" id="newsDeatils">
            <div data-role="content">
                <h3 id="newsTitle"></h3>
                <p id="newsCategory"></p>
                <div id="newsDescription"></div>   
            </div>
        </div>
    </div>
    </form>
    <script src="<%= ResolveUrl("~/js/jquery.min.js") %>"></script>
    <script>
        $(document).bind("mobileinit", function () {
            $.mobile.autoInitializePage = false;
        });
    </script>
    <script src="<%= ResolveUrl("~/js/jquery.mobile-1.3.0.min.js") %>"></script>    
    <script src="<%= ResolveUrl("~/js/knockout-2.2.0.js") %>"></script>
    <script src="<%= ResolveUrl("~/js/NewsDetails.js" )%>"></script>
    <script>
       $.mobile.initializePage();
    </script>
</body>
</html>

NewsDetails.js将发送一个ajax请求,然后用表填充newsDescription div。但没有什么工作?

2 个答案:

答案 0 :(得分:1)

不是延迟初始化整个页面,最好允许全部初始化,然后初始化新代码。在jQm v1.3.2及更早版本中,您可以通过向成功回调添加以下代码来实现此目的。

$('#newsDescription table').trigger('create');

这将允许整个页面初始化并防止如果网络连接速度慢导致您的ajax请求需要一段时间,则会向用户发送无样式页面的闪存。

答案 1 :(得分:0)

我已将$.mobile.initializePage();置于成功回调中,然后每件事都有效。