2013-11-14 43 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")); 
    });