2012-03-10 8 views
5

をappendToを使用するように、ループによって作成されたjQueryのオブジェクトを連結私はdiv秒の列を生成するためのforループを持って、私のコードはjqueryの - グループまたはその一度だけ

for(j=0; j<7; j++) { 
    $('<div/>', { 
    id: 'unique', 
    html: 'whatever' 
}).appendTo('#container'); 

あるこのコードは、模索しているようですすべての反復に対して#containerを追加し、新しいdivを追加します。私が最初にすべてのdivを作成して行き、その後、すべてを一度にコンテナに追加することができるようにコードを書くにはどうすればよい

?申し訳ありませんが、連結/グループ/ jqueryオブジェクトの追加などのキーワードを検索しようとしましたが、正しい検索結果がないようです。

TIA

+0

コードに「appendTo」を1回だけ呼び出させたいのですが? – JaredPar

+1

@ JaredPar私が理解しているように、jqueryはループの繰り返しとして数回ではなく正しいdivを1回探すだけです。 – Jamex

答えて

7

ザンダーのソリューションは、うまく動作するはず助けることができます。私は個人的にjsの '長い' HTML文字列を扱うのが好きではありません。ここであなたのコードに似ている解決策です。

var elements = []; 
for(j=0; j<7; j++) { 
    var currentElement = $('<div>', { id: i, text: 'div' }); 
    elements.push(currentElement[0]); 
} 
$('#container').append(elements); 
+0

ジャスティンありがとう、これはちょっと私が気にしていたものです。このメソッドはリソースを課税することができる配列を導入するため、オブジェクトをグループ化する別の方法があるのだろうかと思います。 – Jamex

+0

はい、jQueryオブジェクトの作成にわずかな税金を支払う可能性があります。ただし、イベントをより簡単にバインドできるという利点があります(イベントがすべての要素で同じであれば、そのイベントを委譲することをお勧めします)。この方法では、イベントでクロージャを作成するという追加の利点がありますここでは必要に応じて)。何千もの要素に到達するまでは、パフォーマンスの向上は見られません。 –

+0

こんにちはジャスティン、コードは動作しますが、私は線elements.push(currentElement [0])を理解していません。 currentElementに[0]があるのはなぜですか? – Jamex

4

これは

var htm = ''; 
for(j=0; j<7; j++) { 
    htm+= '<div id="unique_'+i+'">whatever</div>'; 
} 

$('#container').html(htm); // Or append instead of html 
+0

JoseさんとXanderさん、ありがとうございました。私はテキスト文字列を書くのをやめたくないので、本当にそうしたくありませんでした。私はジャスティンのコードは、私が心に留めていたものの多くであると思う。 – Jamex

+1

OTOHの場合、文字列変数の作成は、jqueryオブジェクトよりも課金が少なくて済みます。 – Jamex

関連する問題