2010-02-06 32 views
0

我有些jQuery的打算在这里:jQuery的挑选下一格在列表中显示

$('#ticker1').hide(); 
$('#ticker2').hide(); 
$('#ticker3').hide(); 

$("#ticker").oneTime(2000,function(i) { /* Do the first pull out once */ 

    var randomNum = Math.floor(Math.random()*3); /* Pick random div to show */ 
    $('div#ticker div:eq(' + randomNum + ')').show(); 

    $("#ticker").animate({right: "0"}, {duration: 800 }); 

}); 

$("#ticker").oneTime(20000,function(i) { /* Do the first retract once */ 

    $("#ticker").animate({right: "-450"}, {duration: 800}); 

    $("#ticker").oneTime(1000,function(i) { 

     $('#ticker1').hide(); 

    }); 

}); 

$("#ticker").everyTime(21500,function(i) { /* Everytime timer gets to certain point */ 

    var randomNum = Math.floor(Math.random()*3); 
    $('div#ticker div:eq(' + randomNum + ')').show(); 

    $("#ticker").animate({right: "0"}, {duration: 800}); /* Pull out right away */ 

    $("#ticker").oneTime(20000,function(i) { /* Retract once */ 

     $("#ticker").animate({right: "-450"}, {duration: 800}); 

    }); 

    $("#ticker").oneTime(21000,function(i) { /* Hide all divs once */ 

     $('#ticker1').hide(); 
     $('#ticker2').hide(); 
     $('#ticker3').hide(); 

    }); 

}); 

我试图得到它显示一个随机div的,第一次翻出,这在已经完成代码的第一部分。但之后,我现在每次都抓取一个随机div(3个div)。我需要更改这部分代码,以便查看3个div的列表,并且每次都会下一个。

因此,如果第一次拉出格为2那之后每次会在这个顺序去:DIV 3,1区,2区,3 DIV,DIV 1等

这里是一个现在正在发生的事情的演示:treethink.treethink.net/backup

感谢, 韦德

+0

为什么你在不使用'this'的情况下使用oneTime?使用setTimeout。另外,查看jQuery动画回调。 – 2010-02-06 01:30:18

回答

0

,而不是产生新的随机数,每次,首先生成它,然后用国防部3递增它,你会按顺序得到下一个div。例如,如果您的随机数生成2,则下一个将是3%3 = 0,然后是1%3 = 1,然后是2%3 = 2,依此类推。

var randomNum = Math.floor(Math.random()*3); 

$("#ticker").everyTime(21500,function(i) { /* Everytime timer gets to certain point */ 

randomNum = (randomNum+1)%3; 

$('div#ticker div:eq(' + (randomNum) + ')').show(); 


$("#ticker").animate({right: "0"}, {duration: 800}); /* Pull out right away */ 


$("#ticker").oneTime(20000,function(i) { /* Retract once */ 

    $("#ticker").animate({right: "-450"}, {duration: 800}); 

}); 

$("#ticker").oneTime(21000,function(i) { /* Hide all divs once */ 

    $('#ticker1').hide(); 
    $('#ticker2').hide(); 
    $('#ticker3').hide(); 

}); 
}); 
+0

非常感谢。实际上我现在只有一个问题。前两个是相同的,所以第一个将是一个随机数,下一个将会是相同的数字,然后它会上一个。我改变$('div#ticker div:eq('+(randomNum ++%3)+')')。show();到$('div#ticker div:eq('+(randomNum + 1)+')')。show();并修正了这个问题,但之后它不会显示下一个只停留在同一个。 – 2010-02-06 01:49:41

+0

如果你把它分成两行,它可能会解决你的问题,问题是它实际上并没有随randomNum更新randomNumber + 1 – 2010-02-06 01:55:28

+0

我该如何解决这个问题?对不起,我对jQuery很陌生。 – 2010-02-06 01:56:25

相关问题