0

我正在使用 Ajax 加载一个 xml 并将其塑造成一个 jQuery Mobile 列表视图。在发送 xml 之后,我正在调用触发方法,以便可以重新初始化页面并将 css 样式添加到列表视图中,如下所示:

xmlhttp.send();
$("#page1").trigger( "create" );

当我加载页面时,我会在几分之一秒内看到列表视图上的样式,但随后列表视图显示时没有 jQuery Mobile 样式。当我像这样使用延迟时,它似乎可以工作:

setTimeout(function(){
    $("#page1").trigger( "create" );
}, 5);

我注意到了这一点,因为当我使用断点时它似乎总是有效。不过这让我很困扰,因为当我使用这种方法时,我总是会在短时间内看到无主题的列表。我还尝试在创建之前和之后刷新列表,但似乎没有任何效果。有谁知道解决这个问题的方法?

4

1 回答 1

1

AJAX 请求是异步的,这意味着在等待响应时运行其他代码。使用 AJAX 请求的一般流程是对在请求的回调函数中接收到的数据执行任何工作。这是一个使用 jQuery AJAX 的示例:

$.ajax({
    url     : 'my-page.html',
    success : function (response) {
        $("#page1").html(response).trigger('create');
    },
    error   : function (jqXHR, textStatus, errorThrown) { /*remember to handle errors*/ }
});

这假定服务器响应是有效的 HTML,并且您想#page1用来自服务器的响应替换 的内容。

于 2012-04-19T23:30:14.130 回答