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

.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 に答える
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 に答える