2013-11-14 108 views
1

我试图将多个音频标签附加到使用jQuery文档的身体:被追加两次jQuery的唯一附加最后一项

$(function() { 
    var a = $("<div/>").text("hello"); 
    $("body").append(a); 
    a.text("world"); 
    $("body").append(a); 
}); 

为什么心不是var a;?我会至少期待“世界”出现两次(我明白我覆盖“你好”)。

回答

3

这是因为a变量中的元素已经附加到body,所以第二行不会引起任何更改。

如果要两个元素所附,则需要手动创建第二或clone第一个:

$(function() { 
    var a = $("<div/>").text("hello"); 
    $("body").append(a); 
    a.text("world"); 
    $("body").append(a.clone()); 
}); 
+1

类似于:'a.clone(true).text(“world”)。appendTo(“body”);' - 这里你去:http://jsfiddle.net/c9JyW/ – tymeJV

+0

所以jquery保持跟踪已经附加了哪些元素?它保留了这个缓存吗? –

+0

@Mike_G不,它重复'append',但元素已经放置在它的位置,所以它看起来什么都没有发生。 –

1

基本上你已经从一个实例的可变

例如插入一个div: http://jsfiddle.net/kdKV8/4/

你可以尝试克隆它..的clone()

$(function() { 
    var a = $("<div/>").text("hello"); 
    $("body").append(a.clone()); 
    a.text("world"); 
    $("body").append(a); 

});

http://api.jquery.com/clone/

0

你也可以尝试下面的代码

$(function() { 
     $("body").append($("<div/>").text("hello")); 
     $("body").append($("<div/>").text("world")); 
    });