2017-01-18 22 views
0

一切工作的元素,但是當我要添加background-image,不同的元素,它只是把從數組最後一個圖像,並設置CSS backgorund到所有這些與最後一張圖像。不同的背景圖像添加到從JSON數組

$.get('con.php',function(data) { 
    var data = JSON.parse(data); 
    for(i = 0; i < data.length; i++) { 
     var div = "<div class='nemkec-dev' id='"+data[i].id+"'>"+"<h1>"+ data[i].text+"</h1>"+"<p>"+ 
     data[i].text2+"</p>"+"<img src='images/"+data[i].image+"'/>"+"</div>"; 
     $('body').append(div); 
     var image = data[i].image; 
    } 
    $.each(data, function(i, dat) { 
     $('.nemkec-dev').css('background-image','url(images/'+dat.image+')'); 
    }); 

它將圖像顯示爲元素。但是,當我想設置CSS規則它不工作。 只需追加last-image即可。

+0

你可以張貼例如'data'並使其工作片段?你想實現什麼? –

+1

你爲什麼要創建包含在背景設置爲相同圖像的div中的圖像元素!? :如上所述,這裏的目標不明確。 –

+1

最後一個圖像被設置爲所有元素,因爲您的選擇器「.nemkec-dev」匹配了所有元素。每個迭代每個元素都被設置,最後一個是剩下的元素。 –

回答

4

當創建var div您可以創建一個內聯樣式var div = "<div style='background-image: url(images/"+data[i].image+")'...

+0

或者如果他想將它們分開使用,而不是'$(DIV).appendTo( '主體'),CSS( '背景圖片', '網址(圖片/' +數據[I] +圖像配 ')');'當然, –

+0

@邁克爾焦化的循環中,你是男人。謝謝:) – NemanjaD

+0

@NemanjaD FO笑! –

0

我敢肯定要遍歷$('.nemkec-dev')元素。你現在正在做的是迭代背景圖像併爲所有.namkec-dev divs設置背景圖像。所以自然的結果是,在這個腳本結束後,您將擁有所有元素與最後一個背景圖像。

您可以邁克爾·科克爾解決方案去符合其他變量使用它們,或者做這樣的事情:

var i = 0; 
$('.nemkec-dev').each(function() { 
    $(this).css('background-image', data[i].image); 
    i++; 
}); 
+0

'i'的價值是多少? –

+1

值得注意的是,這也會生成內聯樣式。 –

+0

@MichaelCoker是的,你完全正確。通過內聯我打算用html代碼創建div時使用它們。 –