2011-08-11 13 views
0

比較的高速です。jQueryでの要素の作成。作成、ラップ、追加

私はいくつかの要素を動的に作成し、別の要素に追加しています。

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

これは、それぞれの属性と内容で<input /><label></label>を生成します。私はちょうど<div>でこれをラップしたいとそうするのも同様にきれいな方法があるだろうと思ったが、私は仕事に次のように見えることはできません。

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

私は私の$elementconsole.log()場合には、それだけです<input>および<label>。私はまた、別途、追加される-<input><label>要素を選択

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

試みたが、.wrapAll()を適用するが、それは上記と同じで、その結果、いずれかの動作しませんしました。

閉じる?私はちょうど別のルートに行く必要がありますか?

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

ああのjQueryを@muするには、以下のおかげで一緒に行くことになった


。同じことをする7百万の方法、そして時々あなたは1つを理解することができません。


編集

ただ、将来の訪問者のための追加。

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

もたらすであろう:

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

をですから、append()にチェーンコールする必要はありませんappend方法はまた、配列を取ることができます。

答えて

5

なぜこれを行うだけではありませんか?例えば

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

:私が正しくあなたを理解していればhttp://jsfiddle.net/ambiguous/CQDe8/1/

+0

おかげで使いたいかもしれないと思う - 実際にスポットを。私はあなたのテクニックを使用してそれを少し修正しました。そしてその完璧な、実際にはより読みやすく、簡単なものでした。私は3で受け入れます。 – Dan

1

は、私はあなたが@mu .appendTo()代わりの.wrapAll()

2
element = $('<div></div').html($('<input />', { 
    // attributes 
}).add('<label />', { 
    // attributes 
})); 
関連する問題