jQuery appending an array of elements jQuery appending an array of elements javascript javascript

jQuery appending an array of elements


You could use an empty jQuery object instead of an array:

var elements = $();for(x = 0; x < 1000; x++) {    elements = elements.add('<div>'+x+'</div>');    // or     // var element = $('<div>'+x+'</div>');    // elements = elements.add(element);}$('body').append(elements);

This might be useful if you want to do stuff with newly generated element inside the loop. But note that this will create a huge internal stack of elements (inside the jQuery object).


It seems though that your code works perfectly fine with jQuery 1.8.


You could just call

$('body').append(elements.join(''));

Or you can just create a large string in the first place.

var elements = '';for(x = 0; x < 1000; x++) {    elements = elements + '<div>'+x+'</div>';}$(document.body).append(elements);

Like you mentioned, probably the most "correct" way is the usage of a DocFrag. This could look like

var elements = document.createDocumentFragment(),    newDiv;for(x = 0; x < 1000; x++) {    newDiv = document.createElement('div');    newDiv.textContent = x;    elements.append( newDiv );}$(document.body).append(elements);

.textContent is not supported by IE<9 and would need an conditional check to use .innerText or .text instead.


Upgrade to jQuery 1.8, this works as intended:

​$('body')​.append([    '<b>1</b>',    '<i>2</i>'   ])​;​