2012-07-31 9 views
8

Sto tentando di aggiungere un'immagine di sfondo a un div generato dinamicamente. Quando aggiungo la proprietà CSS per lo sfondo, come qui di seguito, mi si spezza il plugin:utilizzando jquery per creare dinamicamente div

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

Qualcuno sa che cosa sto facendo male per aggiungere l'immagine di sfondo?

+0

Perché la 'classe' è tra virgolette ma 'css' no? – kevin628

+2

Questo punto e virgola in 'sfondo sta infrangendo il codice – kei

+1

per documenti jquery: il nome' class' deve essere indicato nella mappa poiché è una parola riservata JavaScript. http://api.jquery.com/jQuery/#jQuery2 – thindery

risposta

13

Secondo alcune analisi comparativa riportata in questo SO question, credo che il modo più efficace per creare il vostro elemento HTML usando jQuery sarebbe questo:

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

O per alcuni extra leggibilità:

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

Naturalmente è possibile aggiungere solo usando stringa ma io preferisco in questo modo perché è molto più leggibile e più pulito.

$("<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"); 

Se hai davvero bisogno di sospenderlo per attributi.

Problemi correlati