jQuery Mobile触发器创建需求延迟

时间:2012-04-19 23:22:41

标签: listview jquery jquery-mobile

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

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

当我加载页面时,我会在listview上看到样式的时间不到一秒钟,但是listview会显示没有jQuery Mobile样式。当我使用延迟时似乎有效:

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

我注意到这一点,因为当我使用断点时它总是起作用。这让我感到困扰,因为当我使用这种方法时,我总能在短时间内看到未经编程的列表。我也尝试在创建之前和之后刷新列表,但似乎没有一个工作。有没有人知道解决这个问题的方法?

1 个答案:

答案 0 :(得分: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的内容替换为来自服务器的响应。