jQuery .clone()更改引用

时间:2013-04-16 11:17:05

标签: javascript jquery

我有一个由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/

2 个答案:

答案 0 :(得分:3)

books = temp;

需要

books = temp.clone();

答案 1 :(得分: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节点 - 它可能无法在每个浏览器中使用。