jQuery Mobile在dynamic添加内容后不会应用样式

我知道这个问题出现在几个地方( 迫使jQuery Mobile重新评估dynamic插入的内容上的样式/主题 ),但没有为我工作的答案。

我正在使用Ajax加载一些内容,并将其插入到像这样的div:

$.ajax({ url: "../Services/CalendarService.cshtml?service=true", cache: false, success: function (data) { data = $.parseJSON(data); var s = $("#user_tmpl").html(); var s1 = tmpl(s, data); $("#target").html(s1); $("#targetRefresh").page(); } }); 

我已经尝试设置targetRefresh目标我添加的HTML,并在页面上,但没有运气。 该conent插入,但样式不应用。

我也试过了

 .trigger("enhance") 

任何想法该怎么办?

插入的HTML是一堆这些:

 <div data-theme="e" data-collapsed="true" data-role="collapsible"> <h3>MyOwner2AA</h3> <p>MyDescription</p> <p>/Date(1320339836735)/</p> <p>MyOwner</p> <i></i> </div> 

感谢您的帮助

Larsi

尝试使用新内容在元素上调用.trigger("create")

根据jQuery Mobile文档 ,“ create事件适合于增强包含一个或多个小部件的原始标记”。

编辑 :作为jQuery Mobile 1.4, .trigger('create') 已被弃用 ,你应该使用.enhanceWithin()来代替。 (感谢John Mc的提醒。)

这对我的列表视图工作

 $('ul').listview('refresh'); 

你也可以刷新可折叠的

 $('#element').collapsibleset('refresh') 

当我尝试上述解决scheme时,我在Firebug中收到错误消息

未捕获的exception:在初始化之前不能在listview上调用方法; 试图调用方法'刷新'

我find了一个解决这个问题的方法,而不是在调用.trigger("create")之后添加我调用的新元素

 $("ul").listview(); 

在ajaxcallback函数的结尾。

这一切都为我工作很好。 希望它有帮助。

对于那些错过了上面的,dynamic添加内容后重新应用JQM样式,请执行以下操作:

 $('.myelement').html( myHtmlStr ).enhanceWithin();