2015-06-14 58 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);