2015-06-14 93 views
2

我試圖通過一個循環多次追加圖像元素,但它只出現一次,任何想法爲什麼?jquery循環附加圖像元素只是追加一次

這裏是我的代碼

$(document).ready(function() { 
    var myImage = new Image(); 
    myImage.src = 'image.jpg'; 

    for(i=0; i < 12; i++) { 
    $('#photos').append(myImage) 
    } 
}); 
+0

做出的jsfiddle請 – Mustaghees

回答

2

,因爲如果不是則多次

See demo

改變你的jQuery這種使用同一個對象,您應該創建for循環內的圖像對象,

$(document).ready(function() { 

    for (i = 0; i < 12; i++) { 
     var myImage = new Image(); 
     myImage.src = 'image.jpg'; 

     $('#photos').append(myImage); 
    } 
}); 

更新:這不會影響頁面加載時間,因爲瀏覽器只會加載一次圖像並將其緩存以備後用。你可以在這裏看到更多的細節When a page loads an image, does it load it only once, or every time it is found in the markup?

+0

的事情是我想要的形象被加載並準備追加之前追加,這不會減緩那個過程? –

+0

@MarcoCastro你會追加圖像12次?這是固定的還是可能改變的? –

+0

是的,我會的,它會改變,因爲它們會是不同的圖像,無論我想要的是在追加它們之前加載我的圖像,這就是爲什麼我不希望它們被附加到循環中,我不知道它是否它有道理我在說什麼 –

1

您可以使用cloneNode方法

var myImage = new Image(); 
 
    myImage.src = 'image.jpg'; 
 

 
    for(i=0; i < 12; i++) { 
 
    $('#photos').append(myImage.cloneNode()) 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="photos"></div>

1

試試這個代碼:

$(document).ready(function() { 

    for(i=0; i < 12; i++) { 
     var myImage = new Image(); 
     myImage.src = 'image.jpg'; 
     $('#photos').append(myImage) 
    } 
}); 
3

這是更快:

var i, images = ''; 

for(i = 0; i < 12; i++) 
    images += '<img src="image.jpg">'; 

$('#photos').append(images);