2012-08-12 65 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时,新项目不会继承样式。如果您的网页在没有此脚本的情况下运行,则删除它将是一个临时性的修复。