2009-04-14 19 views
6

Co próbuję zrobić, to utworzyć kontrolkę tabeli przy użyciu jQuery. Zawiera wiele linków i przęseł. Udało mi się to zrobić z prostym połączeniem ciągów, ale nie mogę uwierzyć, że jQuery nie może uczynić tego bardziej eleganckim. Nie mogę używać jTemplates tutaj, ponieważ generacja ma sporo logiki proceduralnej.Jak utworzyć wiele elementów HTML za pomocą jQuery?

Pytanie: czy istnieje sposób na stworzenie tablicy elementów HTML z jQuery i dołączenie ich do jakiegoś kontenera?

Dzięki.

Odpowiedz

22

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

+0

Mogło to zadziałać w 2009 roku, ale dziś kończy się niepowodzeniem z komunikatem o błędzie zależnym od wersji jQuery. [jsFiddle] (https://jsfiddle.net/dtxg22oo/1/). To, co działa, to '$ ('first'). Add ($ ('second')). AppendTo (...)'. –

+1

Przetestowałem to i @romkyns ma rację. Odpowiednio zredagowałem odpowiedź. – Timwi

5

Zawsze append().

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

Wydaje mi się, że tylko przy użyciu konkatenacji ciągów i dołączenia byłby najmniej złożony i prawdopodobnie najszybszy wariant. Jednak po to niesprawdzone przykładem drodze do (prawdopodobnie) upraszcza tworzenie elementów i pozwalają, aby dołączyć je do danego elementu nadrzędnego:

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

powrót e nie działa dla mnie return e [0] działa – Azd325

8

konkatenacji String (lub Array.join) jest dobrze, o ile sprawisz, że będzie ładny;)

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

$(structure.join('')).appendTo(container); 
Powiązane problemy