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();