2012-05-08 111 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選擇]可能的重複(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()在那個

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());​ 

工作演示:http://jsfiddle.net/F2J6g/1/

編輯 您也可以先建立一個空的收集和使用。新增()

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實際上並不意味着什麼。什麼你需要做的就是把他們包含分區,也許這樣的事情裏面:

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'); 

我沒有測試過這一點,但我認爲它應該工作。