2013-04-04 120 views
1

我在一个目录中有图像,我试图用jQuery将它们随机分配给列表项。我有它的工作,但我不想重复图像,如果他们已经被使用。这是我的jquery:从数组中随机选择图像

var images = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg']; 

$("#collageWrap li").each(function() { 
    $('<img src="images/mosaic/' + images[Math.floor(Math.random() * images.length)] + '">').appendTo($(this)); 
}); 

如果我有10张和20列表项,这个想法是对前10个列表项中的10张图像,然后将其余的则留为空白。我如何更改此代码以确保每张图片仅使用一次?

回答

2

的溶液。将同时在随机拍摄的图像进行从源数组中删除:

$("#collageWrap li").each(function() { 
    var index = Math.floor(Math.random()*images.length); 
    var img = images.splice(index, 1)[0]; 
    $('<img src="images/mosaic/' + img + '">').appendTo($(this)); 
    return images.length>0; 
});