2009-04-14 7 views
6

Was ich versuche, ist eine Tabelle Pager-Steuerelement mit jQuery erstellen. Es enthält viele Links und Spannen. Ich habe es geschafft, dies mit einfachen String-Verkettungen zu tun, aber ich kann nicht glauben, dass jQuery das nicht eleganter machen kann. Ich kann hier keine jTemplates verwenden, da die Generierung ziemlich prozedural ist.Wie erstellt man mehrere HTML-Elemente mit jQuery?

Frage: Gibt es eine Möglichkeit, ein Array von HTML-Elementen mit jQuery zu erstellen und sie an einen Container anzuhängen?

Danke.

Antwort

22

$('First Element').add($('Second Element')).appendTo($('body'))

+0

Dies könnte 2009 funktioniert haben, aber heute schlägt es mit einer Fehlermeldung fehl, die von jQuery-Version abhängt. [jsFiddle] (https://jsfiddle.net/dtxg22oo/1/). Was funktioniert, ist $ ('first'). Add ($ ('second')). AppendTo (...) '. –

+1

Ich habe dies getestet und @romkyns ist richtig. Ich habe die Antwort entsprechend bearbeitet. – Timwi

5

Es gibt immer append().

$('#container').append('<span>foobar baz</span>'); 

Es scheint mir, dass nur die Verwendung von String-Verkettung und Anhängen die am wenigsten komplexe und wahrscheinlich schnellste Option wäre. Jedoch Folgende ist ein ungetestete Beispiel einer Art und Weise zu (wohl) die Schaffung von Elementen zu vereinfachen, und lassen Sie sie in einem gegebenen Elternelement anzufügen:

function elemCreate(type, content, attrs) { 
    /* type: string tag name 
    * content: string element content 
    * attrs: associative array of attrs and values 
    */ 
    elem = '<' + type + '></' + type + '>' 
    e = $(elem).attr(attrs) 
    e.append(content) 
    return e 
} 

stuff = [];  
stuff.push(elemCreate('a', 'Click me!', {'href': 'http://stackoverflow.com'}); 

$(stuff).appendTo($('#container')); 
+0

Return e funktioniert nicht für mich zurück e [0] funktioniert – Azd325

8

String Verkettung (oder Array.join) wird gut, solange Sie es schön machen;)

var structure = [ 
    '<div id="something">', 
     '<span>Hello!</span>', 
    '</div>' 
]; 

$(structure.join('')).appendTo(container); 
Verwandte Themen