动态创建列表

时间:2011-11-24 10:25:56

标签: jquery jquery-mobile

我正在尝试从我调用的AJAX调用的响应中创建一个列表。

格式1:

$.ajax({
    url: "BirthdayInvitations.xml",
    dataType: "xml",
    success: function ParseXml(xml) {
        $("div#menu").append('<ul "data-role="listview"> ');
        var ul = $("div#menu  > ul");
        $(xml).find("event").each(function() {
            $(ul).append('<li><a href="' + "hai" + '">' + this.textContent+ '</a></li>'); 
        });
        $('ul').listview('refresh');
    }
});

格式2:

我甚至尝试过使用以下格式。

$('ul').append($('<li/>', {    //here appendin `<li>`
    'data-role':"listview"
}).append($('<a/>', {    //here appending `<a>` into `<li>`
    'href': 'test.html',
    'data-transition': 'slide',
    'text': '$(this).textContent'
})));

格式1的结果是锚标记的简单列表。

请帮我解决问题,我需要一个动态创建的列表视图。

格式2:根本不起作用。

2 个答案:

答案 0 :(得分:0)

我修改了你的第一个例子。附加普通LI标签的问题听起来像this.textContent调用您的XML数据没有找到任何东西,是否是正确的标签/属性名称?

$.ajax({
    url: "BirthdayInvitations.xml",
    dataType: "xml",
    success: function(xml) {
        var $ul = $("<ul></ul>").data("role", "listview");
        $(xml).find("event").each(function() {
            $ul.append('<li><a href="' + "hai" + '">' + this.textContent + '</a></li>'); 
        });
        $ul.appendTo("DIV#menu");
        $ul.listview('refresh');
    }
});

答案 1 :(得分:0)

我猜你需要第一次调用$ ul.listview('create'),因为listview尚未创建 - 'refresh'只能在连续调用中调用..