jQuery中的元素创建;创建,包装,追加

时间:2011-08-11 04:54:18

标签: javascript jquery html dom

相对较快;

我正在动态创建一些元素,并将它们附加到另一个元素。

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

这会产生<input /><label></label>及其各自的属性和内容。我只是想在包装这个<div>,并认为会有这样的一个同样干净的方式,但我似乎无法得到以下工作:

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

如果I console.log() {我的{1}},这仅仅是$element<input>。我也试过了

<label>

分别选择要附加的$element = $($('<input />', { // attributes }).add('<label />', { // attributes })).wrapAll('<div />'); <input>元素,并应用<label>,但这也不起作用,导致与上面相同。

我关门了吗?我应该走另一条路吗?


结束以下感谢@mu

.wrapAll()

哦jQuery;有七百万种方法可以做同样的事情,有时候你无法找出一个。


修改

只为未来的访客添加; $element = $('<div />').append($('<input />', { // attr }).add('<label />', { // attr })); 方法也可以采用数组:

append

哪会产生:

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

因此您无需将呼叫链接到<div> <div></div> <div></div> <div></div> </div>

3 个答案:

答案 0 :(得分:5)

为什么不这样做?

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果我理解正确,我认为您可能希望使用.appendTo()代替.wrapAll()