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()
函数

我建议:

  • 清空您填充的div
  • 在内部创建一个新的div
  • 填充新的div
  • 在该新div上调用
    .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();            
        })