2012-07-31 16 views
8

動的に生成されたdivに背景画像を追加しようとしています。jqueryを使用してdivを動的に作成する

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

誰もが、私は背景画像を追加するために間違ってやっているか知っている:私は背景のCSSプロパティを追加すると、以下のように、それは私のプラグインを壊しますか?

+0

なぜ 'class'は引用符で囲まれていますが、 'css'は引用符で囲まれていませんか? – kevin628

+2

'background'のセミコロンがあなたのコードを壊しています。 – kei

+1

jquery docs:' class'という名前は、JavaScriptの予約語なので、マップ内で引用する必要があります。 http://api.jquery.com/jQuery/#jQuery2 – thindery

答えて

13

このSO questionで報告されたいくつかのベンチマークによると、私はjQueryのを使用してHTML要素を作成するための最も効率的な方法は、このことと考えている:

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

または、いくつかの余分なため可読性:

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

もちろん、文字列を使用して追加することはできますが、はるかに読みやすく洗練されているので、この方法をお勧めします。

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

実際に属性を付ける必要がある場合は、

関連する問題