2011-08-11 59 views
0

比較快的一個;在jQuery中創建元素;創建,包裝,追加

我正在動態創建一些元素,並將它們附加到另一個元素。

$element = $('<input />', { 
    // attributes 
}).add('<label />', { 
    // attributes 
}); 

這產生了<input /><label></label>及其各自的屬性和內容。我只是想在<div>來包裝這一點,以爲會有這樣的一個同樣乾淨的方式,但我似乎無法得到以下工作:

$element = $('<input />', { 
    // attributes 
}).add('<label />', { 
    // attributes 
}).wrapAll('<div />'); 

如果我console.log()$element,這只是<input><label>。我也試着

$element = $($('<input />', { 
    // attributes 
}).add('<label />', { 
    // attributes 
})).wrapAll('<div />'); 

分別選擇待所附<input><label>元件,並且施加.wrapAll(),但這並不能工作,導致與上述相同。

我關閉了嗎?我應該去另一條路線嗎?


結束了以下感謝要@mu

$element = $('<div />').append($('<input />', { 
    // attr 
}).add('<label />', { 
    // attr 
})); 

哦jQuery的;七百萬種方法來做同樣的事情,有時候你無法弄清楚。


編輯

只是增加了對未來的訪客;該append方法也可以採取一個數組:

$('<div />').append([ 
    $('<div />'), 
    $('<div />'), 
    $('<div />'), 
]); 

這將產生:

<div> 
    <div></div> 
    <div></div> 
    <div></div> 
</div> 

所以你不必鏈調用append()

回答

5

爲什麼不這樣做呢?

var $div = $('<div>').append($element); 

例如:http://jsfiddle.net/ambiguous/CQDe8/1/

+0

感謝@mu - 的確現貨上。我用你的技術稍微修改了一下,它的完美,實際上更具可讀性和簡潔性。我會在3點接受。 – Dan

1

如果我理解正確的話,我想你可能想使用.appendTo()代替.wrapAll()

2
element = $('<div></div').html($('<input />', { 
    // attributes 
}).add('<label />', { 
    // attributes 
}));