2009-04-14 14 views
6

Lo que intento hacer es crear un control de paginación de tabla usando jQuery. Contiene muchos enlaces y tramos. He logrado hacer esto con una concatenación simple de cadenas, pero no puedo creer que jQuery no pueda hacerlo más elegante. No puedo usar jTemplates aquí ya que la generación tiene bastante lógica de procedimiento.¿Cómo crear múltiples elementos HTML con jQuery?

Pregunta: ¿hay alguna manera de crear una matriz de elementos HTML con jQuery y anexarlos a algún contenedor?

Gracias.

Respuesta

22

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

+0

Esto puede haber funcionado en 2009, pero hoy falla con un mensaje de error que depende de la versión de jQuery. [jsFiddle] (https://jsfiddle.net/dtxg22oo/1/). Lo que funciona es '$ ('primero'). Add ($ ('segundo')). AppendTo (...)'. –

+1

He probado esto y @romkyns tiene razón. Edité la respuesta en consecuencia. – Timwi

5

Siempre hay append().

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

Me parece que sólo usar la concatenación de cadenas y anexar sería el menos complejo, y probablemente opción más rápida. Sin embargo, sigue es un no probado ejemplo de una forma de (posiblemente) simplificar la creación de elementos, y le permitirá anexar a un determinado elemento padre:

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 no funciona para mí return e [0] está funcionando – Azd325

8

La concatenación de cadenas (o Array.join) se bien, siempre que lo haga bonito;)

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

$(structure.join('')).appendTo(container); 
Cuestiones relacionadas