2

我试图淡入每个元素,以便它们随机出现而不是 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);    

});​

JS 小提琴:http: //jsfiddle.net/YGC9f/2/

4

3 回答 3

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);
}​

演示: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);
}​

演示:http: //jsfiddle.net/YGC9f/6/

于 2012-11-22T12:28:48.430 回答
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 数组删除方法):

http://jsfiddle.net/Claudius/cUge9/3/

于 2012-11-22T12:35:12.387 回答
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);
}​
于 2012-11-22T12:34:37.470 回答