Javascript 将HTML动态添加到jquery mobile后刷新节
可能重复:Javascript 将HTML动态添加到jquery mobile后刷新节,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,可能重复: 我看过一些关于这方面的帖子,但没有一篇真正适用,或者我可能只是看错了。我有一些HTML是从一个服务器提供给我的,我真的无法更改。我想做的是,抓取HTML,将其插入到div元素中,让jQueryMobile在其上进行样式设置。我可能需要多次这样做,这就是疼痛发生的地方 当我第一次插入它时,一切都很好,jqm会选择添加项并完美地对其进行样式设置。如果我第二次尝试,jqm根本不会接受它。我试着制作一个我复制和修改的“模板”,或者只是插入静态html&两者都不起作用 我在下面有一个测试用例
我看过一些关于这方面的帖子,但没有一篇真正适用,或者我可能只是看错了。我有一些HTML是从一个服务器提供给我的,我真的无法更改。我想做的是,抓取HTML,将其插入到div元素中,让jQueryMobile在其上进行样式设置。我可能需要多次这样做,这就是疼痛发生的地方 当我第一次插入它时,一切都很好,jqm会选择添加项并完美地对其进行样式设置。如果我第二次尝试,jqm根本不会接受它。我试着制作一个我复制和修改的“模板”,或者只是插入静态html&两者都不起作用 我在下面有一个测试用例,如您所见,单击一次添加新列表,很好,再次单击它&您将得到一个未设置样式的选择。我在某个地方读到过,使用live事件可能有效,但在这种情况下也不行 另外,我知道jQuery mobile中的select list selectmenu方法,但是我得到的条目可能是单个/多个选择列表、一组单选按钮,甚至是一组自由文本字段。如您所见,我还尝试在最顶层的元素上运行page方法,我还尝试在即将添加的元素上运行page,但都没有效果:( 测试:
列表插入测试
添加新列表
添加模板列表
清楚的
1.
2.
3.
4.
5.
jkghjkgh
$('#addips').live('单击',(函数()){
l=$('#列表模板')。克隆()
$('#thelist').html('')
$('#列表')。附加($(l))
$(“#列表”)。第页()
}))
$(“#添加列表”)。单击(函数(){
l=$(“12345”)
$('#thelist').html('')
$('#列表')。附加($(l))
$(“#列表”)。第页()
//$(“#the place”)。在($(“12345”)之后
//$('#列表模板')。第页()
})
$('#clearall')。单击(函数(){
$('#thelist').html('')
})
更新:使用下面naugur的答案,“添加新列表”函数看起来像
$('#addlist').click(function() {
l = $("<select id='thelisttemplate'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>")
$('#thelist').html('<div data-role="collapsible-set" id="newstuff"></div>');
$("#newstuff").html(l).page();
})
$('#添加列表')。单击(函数(){
l=$(“12345”)
$('#thelist').html('');
$(“#newstuff”).html(l.page();
})
更新#2:显然,这已经被弃用了,请参阅下面关于如何在beta2中修复的一些想法。Update 从jquery mobile beta2开始,您将触发一个事件-
.trigger('create')
常见问题更新:
这是不推荐的:
使用.page()
函数
我建议:
.page()
我为此挣扎了几个小时,但什么都没用。我有一个级联选择菜单,当在另一个菜单中选择一个选项时,它通过ajax调用填充。DOM正在更新,但jQM拒绝识别新添加的选项 最终起作用的是(这是基于一种预感——我在任何地方都没有发现它的记录):
$('#controlName')。选择菜单('refresh');
我正在使用JQM 1.0 RC2。哈哈,太棒了。我昨天读了你的解决方案,但没能让它工作,但实际上只是设法让它完全按照那种方式运行。我正要把这个链接放进.Thanx。有这样的api页面吗?我甚至很难在他们的网站上找到.page方法。那里没有记录页面。我正在计划ning希望在我的jquerymobiledictionary上对此做一个更好的文档。目前字典是自动生成的,但如果我找到人帮助,它们将得到维护。用beta2 Coolness更新了答案真棒——这解决了我升级到beta2后的第一个问题每个小部件都有刷新方法。最好使用那些可用,但在插入带有不同组件的仲裁html时,您唯一的选择是触发“创建”,增强将为您完成以下任务:
$('#addlist').click(function() {
l = $("<select id='thelisttemplate'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>")
$('#thelist').html('<div data-role="collapsible-set" id="newstuff"></div>');
$("#newstuff").html(l).page();
})