我试图淡化每个元素,使它们随机出现而不是0,1,2,3 ......
我虽然关于生成一个随机数组,然后试图做这样的淡出,但显然不起作用。任何人都可以建议这样做的最佳方法吗?
我当时认为选择一个随机数组是最好的,因为相同的索引号不能被选中两次?
我目前的尝试:
JS
var testArray = [3,2,6,4,0,1,5];
var $li = $('li').hide();
$li.each(function(i){
var $this = $(this);
$this.eq(testArray[i]).fadeIn(i*100);
});
答案 0 :(得分:4)
这会同时淡化所有块:
var testArray = [3, 2, 6, 4, 0, 1, 5];
var $li = $('li').hide();
for (var i = 0; i < testArray.length; i++) {
$li.eq(testArray[i]).fadeIn(i * 1000);
}
DEMO: http://jsfiddle.net/YGC9f/3/
这将逐个淡出:
var testArray = [3, 2, 6, 4, 0, 1, 5];
var $li = $('li').hide();
for (var i = 0; i < testArray.length; i++) {
(function(i) {
setTimeout(function() {
$li.eq(testArray[i]).fadeIn(1000);
}, i * 1000);
})(i);
}
答案 1 :(得分:1)
你可以试试这个
var testArray = [3,2,6,4,0,1,5];
$('li').hide();
$('li').each(function(i){
$('li').eq(testArray[i]).fadeIn(i*1000);
});
jsFiddle这里:http://jsfiddle.net/Claudius/776eV/1/
<强>更新强>
还有一个更好的版本,它是真正随机的(使用John Resig数组删除方法):
答案 2 :(得分:0)
使用VisioN的答案作为起始材料,您可以创建一个如下随机数组: http://jsfiddle.net/YGC9f/7/
var testArray = [0,1,2,3,4,5,6];
var tmp, current, top = testArray.length;
if(top) while(--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = testArray [current];
testArray [current] = testArray [top];
testArray [top] = tmp;
}
var $li = $('li').hide();
for (var i = 0; i < testArray.length; i++) {
$li.eq(testArray[i]).fadeIn(i * 1000);
}