0

jQuery によって生成された XML があります。

私が欲しいもの

<booklists>
    <booklist>
        <userid>0</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
    <booklist>
        <userid>1</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
    <booklist>
        <userid>2</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
    <booklist>
        <userid>3</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
    <booklist>
        <userid>4</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
</booklists>

私が得るもの

<booklists>
    <booklist>
        <userid>0</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
    <booklist>
        <userid>4</userid>
        <userid>3</userid>
        <userid>2</userid>
        <userid>1</userid>
        <book>Foo</book>
        <book>Bar</book>
    </booklist>
</booklists>

私のコード

lists = $('<booklists />')
books = $('<booklist />');

book = $('<book>Foo</book>');
books.append(book);

book = $('<book>Bar</book>');
books.append(book);

temp = books.clone();

for (var i = 0; i < 5; i++) {
    books.prepend('<userid>' + i + '</userid>');
    lists.append(books);
    books = temp;
}

$('.output').html(lists);

http://jsfiddle.net/q6Q4A/

4

2 に答える 2

3
books = temp;

する必要があります

books = temp.clone();
于 2013-04-16T11:21:32.190 に答える
2

.clone()呼び出しをループに移動したいようです:

var lists = $('<booklists />'),
    books = $('<booklist />');
books.append('<book>Foo</book>').append('<book>Bar</book>');

for (var i = 0; i < 5; i++) {
    var temp = books.clone();
    temp.prepend('<userid>' + i + '</userid>');
    lists.append(temp);
}

$('.output').html(lists);

ところで、HTML ドキュメントで XML ノードを作成しようとするべきではないと思います。すべてのブラウザーで機能するとは限りません。

于 2013-04-16T11:22:14.067 に答える