从ajax动态生成列表视图 - 刷新不起作用

时间:2012-11-23 12:46:18

标签: jquery jquery-mobile

我想用jquery mobile动态生成一个listview。我有这个代码,但.listview('refresh')不起作用:

<div id="content" data-role="content">       
</div><!-- /content -->

<script type="text/javascript">
    $.ajax({
        type: "GET",
        url: "my.json",
        dataType: "json",
        success: function(articles) {
            var html = '<ul id="hellolist" data-role="listview"><li><h3>One</h3></li><li><h3>Two</h3></li><li><h3>Three</h3></li></ul>';            
            $('#content').append($(html));
            $('#hellolist').listview('refresh');
        }                            
    });
</script>

如果我只生成列表项或者我不使用ajax,则刷新会很好地格式化listview。

测试#1:效果很好。

<div id="content" data-role="content">
    <ul id="hellolist" data-role="listview"> </ul>
</div><!-- /content -->

<script type="text/javascript">
        var html = '<li><h3>One</h3></li><li><h3>Two</h3></li><li><h3>Three</h3></li>';            
        $('#hellolist').append($(html));
        $('#hellolist').listview('refresh');
</script>

测试#2:效果很好。

<div id="content" data-role="content">       
</div><!-- /content -->

<script type="text/javascript">
        var html = '<ul id="hellolist" data-role="listview"><li><h3>One</h3></li><li><h3>Two</h3></li><li><h3>Three</h3></li></ul>';            
        $('#content').append($(html));
        $('#hellolist').listview('refresh');
</script>

测试#3:效果很好。

<div id="content" data-role="content">
    <ul id="hellolist" data-role="listview"> </ul>       
</div><!-- /content -->

<script type="text/javascript">
    $.ajax({
        type: "GET",
        url: "my.json",
        dataType: "json",
        success: function(articles) {
            var html = '<li><h3>One</h3></li><li><h3>Two</h3></li><li><h3>Three</h3></li>';            
            $('#hellolist').append($(html));
            $('#hellolist').listview('refresh');
        }                            
    });
</script>  

有人有任何想法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

如果你不想在HTML中使用空的UL标签,你可以尝试调用.trigger('create)方法而不是.listview(“refresh”);

如果这不起作用,请尝试调用.listview();没有“刷新”参数。

所以,基本上,而不是

$('#hellolist').listview('refresh');

$('#hellolist').trigger('create');

$('#hellolist').listview();
祝你好运。

编辑:如果仍然无法正常工作,您可以尝试在包含新列表的页面上触发创建事件。

答案 1 :(得分:0)

它不是第一个工作,因为你也附加了UL标签。 尝试只附加'LI'标签,UL应该已经在html结构中。

var html = '<li><h3>One</h3></li><li><h3>Two</h3></li><li><h3>Three</h3></li>';   

在你的HTML中:

   <ul data-role="listview" id="" data-split-icon="gear" data-split-theme="a" ></ul>