2012-07-31 12 views
8

Estoy tratando de agregar una imagen de fondo a un div generado dinámicamente. Cuando agrego la propiedad CSS para el fondo, como a continuación, se me parte el plugin:utilizando jquery para crear dinámicamente div

$("<div>", { 
    'class': "iviewer_image_mask", 
    css: "background: url('http://somesite.com/path/to/image.jpg');" 
}).appendTo(this.container); 

Alguien sabe lo que estoy haciendo mal para agregar la imagen de fondo?

+0

¿Por qué 'clase' está entre comillas pero 'css' no? – kevin628

+2

Ese punto y coma en 'background está rompiendo el código – kei

+1

por jquery docs: el nombre' class' debe aparecer en el mapa, ya que es una palabra reservada de JavaScript. http://api.jquery.com/jQuery/#jQuery2 – thindery

Respuesta

13

Según algunos evaluación comparativa se informa en este SO question, creo que la forma más eficiente de crear un elemento HTML con jQuery sería la siguiente:

$('<div class="iviewer_image_mask" style="background: url(http://somesite.com/path/to/image.jpg);"></div>').appendTo(this.container); 

o por alguna adicional legibilidad:

var elm = '<div class="iviewer_image_mask" ' + 
      'style="background: url(http://somesite.com/path/to/image.jpg);">'+ 
      '</div>'; 
$(elm).appendTo(this.container); 
3
$("<div>") 
    .addClass('iviewer_image_mask') 
    .css('background', "url('http://somesite.com/path/to/image.jpg')") 
    .appendTo(this.container); 
18

Por supuesto que puede agregarlo solo con una cuerda, pero yo prefiero que así sea, porque es mucho más legible y más limpio.

$("<div>", { 
    'class': "iviewer_image_mask", 
    css: { 
     "background": "url('http://somesite.com/path/to/image.jpg')" 
    } 
}).appendTo(this.container); 

demo

4
$("<div>").attr({ 
    'class': "iviewer_image_mask", 
    'style': "background: url('http://somesite.com/path/to/image.jpg');" 
}).appendTo("body"); 

Si realmente necesita apend it por atributos.

Cuestiones relacionadas