2012-04-19 55 views
0

我使用Ajax來加載一個xml並將其形成一個jQuery Mobile listview。發送XML後 右鍵我打電話的觸發方式,使得頁面可以被重新初始化和CSS樣式可以添加到列表視圖,像這樣:jQuery Mobile觸發器創建需要延遲

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

當我加載網頁,我看到了listview中的樣式只有幾分之一秒的時間,但是然後listview顯示沒有jQuery Mobile樣式。它似乎工作時,我使用延遲雖然如此:

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

我注意到這一點,因爲它似乎總是工作時,我用了一個斷點。這讓我很困擾,因爲當我使用這種方法時,我總是會在短時間內看到非禮貌的列表。我還嘗試在創建之前和之後刷新列表,但似乎沒有任何工作。有沒有人知道解決這個問題的方法?

回答

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從服務器的響應內容。

+0

當我使用xmlhttp時,我該如何獲得此工作?我正在替換我的內容,如下所示:document.getElementById('content')。innerHTML = rawhtml; xmlhttp.open(「GET」,url,true); xmlhttp.send(); – Dan 2012-04-19 23:45:22

+0

對不起,我不是專家,我使用jQuery的任何我需要使用的AJAX。搜索Google(或其他),例如:'xmlhttp ajax callback'。那應該找到你正確的答案。 – Jasper 2012-04-20 00:30:02

+0

我試過這個使用ajax從另一個html頁面獲取,爲我提供了原始列表視圖,就像你的例子。但是在這種情況下觸發似乎沒有任何效果。 – Dan 2012-04-20 01:18:55