2012-05-08 13 views
3

以下は、私がしようとしているプロトタイプです。jQueryオブジェクトを連結する

var entry_set = $; 

// start to loop data 
for([]) 
{ 
    // create HTML element to represent that data 
    $('<div></div>') 
     .data([]) 
     .addClass([]) 
     .on([]) 
     .insertAfter(entry_set); 
} 

// modify DOM only once all the entries are consolidated to a single jQuery object 
entry_set.appendTo('.entries'); 

このコメントはすべてです。簡単に言えば、データを挿入するときにドキュメントDOMを一度しか変更しないという考え方です。私は通常、HTML文字列のアプローチ(単純に文字列を使って同じ構造を連結する)に行きますが、これに類似したものも同様に興味があります。

+0

[jQueryの2つの選択をマージする]の可能な複製(http://stackoverflow.com/questions/2400797/merging-two-jquery-selections) –

+1

私は初期の「選択」がないので重複しません。本質的に主な問題。 – Gajus

+0

そして、空の選択を作成します: 'var entry_set = $()'。また、[空のJQueryオブジェクトを取得する](http://stackoverflow.com/questions/897331/getting-an-empty-jquery-object) –

答えて

2

あなたは空のDOM要素と.appendを(作成することができます):http://jsfiddle.net/F2J6g/1/

EDIT また、空のコレクションを開始し、使用することができます.add ()

var entry_set = $(); //empty collection 

// start to loop data 
var i = 4; 
while(i--) { 
    // create HTML element to represent that data 
    var item = $('<div>', { 
     text: "test " + i 
    }); 
    entry_set = entry_set.add(item); 
} 

// modify DOM only once all the entries are consolidated to a single jQuery object 
$("body").append(entry_set); 

http://jsfiddle.net/F2J6g/2/

0

@Guy、私はあなたが希望のHTML出力を得るとは思わない。 「ラップ」を試してみてください。 サンプル構文:

$('.OuterDiv').wrap('<div class="abc" />'); 
0

残念ながら、これらのオブジェクトが実際に実際には何も意味しないinsertAfterを呼び出し、任意の階層構造に添付されていないため。何をする必要がありますが、多分、含むdivの内側にこのような何かにそれらを入れている:

var entry_set = $('<div>'); 

// start to loop data 
for([]) 
{ 
    // create HTML element to represent that data 
    $('<div></div>') 
     .data([]) 
     .addClass([]) 
     .on([]) 
     .appendTo(entry_set); 
} 

// modify DOM only once all the entries are consolidated to a single jQuery object 
entry_set.appendTo('.entries'); 

を、私はそれをテストしていませんが、私はそれが動作するはずだと思います。でデモを働いている

var entry_set = $("<div>"); //empty dom element 

// start to loop data 
var i = 4; 
while(i--) { 
    // create HTML element to represent that data 
    var item = $('<div>', { 
     text: "test " + i 
    }); 
    entry_set.append(item); 
} 

// modify DOM only once all the entries are consolidated to a single jQuery object 
$("body").append(entry_set.children());​ 

関連する問題