我有一个像这样的HTML代码:
<div id="buttons">
<a id="b1" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b2" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b3" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b5" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b6" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b7" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
<a id="b8" href="#"><img src="http://content.captive-portal.com/campaigns/redbull/_images/b6.jpg" /></a>
</div>
和jquery就像这样:
$('#b1, #b2, #b3, #b4, #b5, #b6, #b7, #b8, #b9').hide();
setTimeout(function() {
$('#b1').fadeIn(500)
}, 600);
setTimeout(function() {
$('#b2').fadeIn(500)
}, 700);
setTimeout(function() {
$('#b3').fadeIn(500)
}, 800);
setTimeout(function() {
$('#b4').fadeIn(500)
}, 900);
setTimeout(function() {
$('#b5').fadeIn(500)
}, 1000);
setTimeout(function() {
$('#b6').fadeIn(500)
}, 1100);
setTimeout(function() {
$('#b7').fadeIn(500)
}, 1200);
setTimeout(function() {
$('#b8').fadeIn(500)
}, 1300);
如何自动延迟“按钮”div中的所有项目,因此每一个下一个项目都会延迟出现,但是一个接一个地出现?因此,不是为每个单独的项目编写一个setTimeout函数,而是执行一次,所以如果我再添加100个项目,它仍然可以正常工作吗? 示例如下:jsFiddle
答案 0 :(得分:2)
你可以这样做:
$('[id^=b]').hide();
for (var i=1; i<9; i++) {
(function(i){
setTimeout(function() {
$('#b'+i).fadeIn(500);
}, 500+100*i);
})(i);
}
请注意, 没有为每个a
元素提供ID,并且您不必在js中设置限制:您可以使用简单的类( <a class=au...
)并执行此操作:
$('.au').hide().each(function(i){
(function(e, i){
setTimeout(function() {
e.fadeIn(500);
}, 500+100*i);
})($(this), i);
});