在匹配集的每个元素中随机淡化?

时间:2012-11-22 12:26:17

标签: javascript jquery

我试图淡化每个元素,使它们随机出现而不是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/

3 个答案:

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

DEMO: http://jsfiddle.net/YGC9f/6/

答案 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数组删除方法):

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

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