【问题标题】:jQuery Mobile trigger create needs delayjQuery Mobile 触发器创建需要延迟
【发布时间】:2012-04-19 23:22:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: listview jquery jquery-mobile


    【解决方案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 的内容。

    【讨论】:

    • 当我使用 xmlhttp 时如何让它工作?我正在像这样替换我的内容: document.getElementById('content').innerHTML=rawhtml; xmlhttp.open("GET",url,true); xmlhttp.send();
    • 对不起,我不是这方面的专家,我将 jQuery 用于我需要使用的任何 AJAX。在谷歌(或其他)搜索类似的东西:xmlhttp ajax callback。那应该会为您找到正确的答案。
    • 我尝试使用来自另一个 html 页面的 ajax get 来为我提供原始列表视图,就像您的示例一样。但是,在这种情况下,触发器似乎没有任何效果。
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多