0

当我没有类或任何东西时,我的 xml 解析正在经历和循环,但我现在正在尝试使用 jquery mobile 对其进行样式设置。我必须以这种方式创建列表,以便在加载后由 jquery 应用样式。但它只加载列表中的第一个结果。如果我提醒 $(this).text() 我得到 5 个正确的响应。但是下面的代码不起作用。

$(document).ready(function() {

                             $.ajax({
                                    type: 'GET',
                                    url: 'test.xml',
                                    dataType: 'xml',
                                    success: function(xmlDoc) {
                                    var $xml = $(xmlDoc);
                                    $xml.find('FirstName').each(function() {
                                                                $("#list").html('<li ><a href="acura.html">' + $(this).text() + '</a></li>');
                                                                $("#list").listview('refresh');
                                                                });

                                    }
                                    });



            });

继承人的html:

 <body>
        <div data-role="page">

            <div data-role="header">
                <h1>Deep Web</h1>
            </div><!-- /header -->

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

            <div data-role="footer">
                <h4>Footer content</h4>
            </div><!-- /footer -->

        </div>
    </body>
4

2 回答 2

1
 $("#list").html('<li ><a href="acura.html">' + $(this).text() + '</a></li>');

在这里,您在每个循环中设置一个新的 html,

改成这样

 $("#list").append('<li ><a href="acura.html">' + $(this).text() + '</a></li>');
于 2012-05-07T21:52:41.047 回答
1

.html(SONETHING)和做是一样的.empty().append(SOMETHING)。你应该做的是缓冲你将追加到 DOM 的内容并一次性追加,因为这是一个昂贵的过程。

                         $.ajax({
                                type: 'GET',
                                url: 'test.xml',
                                dataType: 'xml',
                                success: function(xmlDoc) {
                                    var $xml = $(xmlDoc),
                                        out  = [];//create array to buffer output
                                    $xml.find('FirstName').each(function() {

                                        //add this index to the buffer array
                                        out.push('<li ><a href="acura.html">' + $(this).text() + '</a></li>');
                                    });

                                    //select the #list element only once, replace the HTML all at once, then refresh
                                    $("#list").html(out.join('')).listview('refresh');

                                }
                        });

了解如何使用数组存储一堆组合在一起的 HTML 字符串。此外,如果您只想添加新的列表项而不是覆盖现有的列表项,您可以.html().append().

文档.append()http ://api.jquery.com/append

于 2012-05-07T21:54:24.023 回答