2012-08-12 35 views
0

我想通過ajax動態地將項目添加到jQuery移動列表視圖中。當通過ajax附加項目時,listview不會繼承樣式.- jquery mobile

當我返回數據並追加生成的html新項目不會繼承listview樣式屬性,任何幫助將不勝感激。

$(function() { 
    $('.load_more').live("click",function() { 
     var a_id = $(this).attr("id"); 
     var b_id = $(this).attr("data"); 
    if(a_id!='end'){ 
     $.ajax({ 
      type: "POST", 
      url: "data.php", 
      data: "aid="+ a_id+"&bid="+b_id, 
    beforeSend: function() { 
     $('a.load_more').html('<img src="loading.gif" />'); 

}, 
    success: function(html){ 
     $("#more").remove(); 
     $("ul#updates").append(html); 
     $('ul#updates').listview('refresh'); 
     } 
    }); 
} 
     return false; 
    }); 
}); 

回答

0

jQuery Mobile不會自動增強動態內容。你必須觸發create事件迫使JQM初始化新的內容:

$(html).trigger('create'); 

當涉及到列表視圖,增加新的項目時,refresh應該足夠了。看到這個例子http://jsfiddle.net/qrYF7/

http://jquerymobile.com/demos/1.1.1/docs/pages/page-scripting.html

類似的問題:

Forcing jQuery Mobile to re-evaluate styles/theme on dynamically inserted content

jQuery Mobile does not apply styles after dynamically adding content

+0

我究竟會從哪裏調用這個,經過一個小時的谷歌搜索這是我想出來,但嘗試過,它從來沒有工作。 – Guernica 2012-08-12 20:22:22

+0

我試過,$(「ul#updates」)。append(html).trigger(「create」);仍然沒有工作,無論如何感謝 – Guernica 2012-08-12 20:46:23

+0

也許你的AJAX調用沒有返回你認爲它是..?調用刷新應該足夠了。請參閱:http://jsfiddle.net/qrYF7/ – 2012-08-13 00:44:01

0

我有過類似的問題,讓AJAX調用時,並曾與列表視圖()或觸發()函數沒有運氣。當內容不是動態的時候,這些對我來說很有用,就像Derek在回覆中的jsfiddle一樣。但我發現,如果您使用的是Google ajax API(http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js或1.7.1或某些變體),那麼listview()函數將停止工作。將此腳本添加到帶有靜態內容的jsfiddle時,新項目不會繼承樣式。如果您的網頁在沒有此腳本的情況下運行,則刪除它將是一個臨時性的修復。