2009-04-14 2 views
6

Что я пытаюсь сделать, так это создать элемент управления пейджером таблицы с помощью jQuery. В нем много ссылок и пролетов. Мне удалось сделать это с помощью простой конкатенации строк, но я не могу поверить, что jQuery не может сделать это более элегантным. Я не могу использовать jTemplates здесь, поскольку у поколения есть довольно много процедурной логики.Как создать несколько элементов HTML с помощью jQuery?

Вопрос: есть ли способ создать массив элементов HTML с jQuery и добавить их в какой-нибудь контейнер?

Спасибо.

ответ

22

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

+0

Это, возможно, сработало в 2009 году, но сегодня это не удается с сообщением об ошибке, которое зависит от версии jQuery. [JsFiddle] (https://jsfiddle.net/dtxg22oo/1/). Что работает '$ ('first'). Add ($ ('second')). AppendTo (...)'. –

+1

Я протестировал это, и @romkyns прав. Я отредактировал ответ соответственно. – Timwi

5

Существует всегда append().

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

Мне кажется, что только с помощью конкатенации и присоединять бы наименее сложным, и, вероятно, самый быстрый вариант. Однако после является непроверенных пример пути (возможно) упростить создание элементов и позволяет добавлять их к данному родительскому элементу:

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 не работает для меня return e [0] работает – Azd325

8

Объединение строк (или Array.join) является отлично, пока вы делаете это довольно;)

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

$(structure.join('')).appendTo(container); 
Смежные вопросы