如何推迟each()
被触发?
这是在给定的某个时间延迟每个框消失的代码。
$(document).ready(function(){
var delay = 0;
$('.block-item:lt(16)').each(function(){
//^^ do for every instance less than the 16th (starting at 0)
$(this).delay(delay).animate({
opacity:0
},500);
delay += 500;
});
});
但是我希望在触发each()
之前延迟大约五秒钟。这可行吗?
这是link。
答案 0 :(得分:0)
这是我专门为此目的做的一个片段。 你可以打电话给iniFadeChildren($('。parent'),'li',500) 父母中的所有李将一个接一个地消失
function iniFadeChildren(pParent, pChildrenType, pDelay, pSpeed){
pParent.find(pChildrenType).css({display:'none'});
if(!pChildrenType){pChildrenType='*'} if(!pDelay){pDelay=200} if(!pSpeed){pSpeed=300}
fadeChildren(pParent, pChildrenType, pDelay, 0, pParent.children(pChildrenType).length, pSpeed);
}
function fadeChildren(pParent, pChildrenType, pDelay, pNbr, pTotal, pSpeed){
pParent.find(pChildrenType).eq(pNbr).fadeIn(pSpeed);
pNbr++;
if(pNbr!=pTotal){
var command='fadeChildren('+pParent+', '+pChildrenType+', '+pDelay+', '+pNbr+', '+pTotal+')';
t=setTimeout(function(){fadeChildren(pParent, pChildrenType, pDelay, pNbr, pTotal, pSpeed)}, pDelay);
}
}
答案 1 :(得分:0)
$('.block-item:lt(16)').delay(delay).each(function(){
//^^ do for every instance less than the 16th (starting at 0)
$(this).animate({
opacity:0
},500);
delay += 500;
});
)
答案 2 :(得分:0)
如果只是延迟初始动画,为什么不以5000延迟开始呢?
$(document).ready(function(){
var delay = 5000;
$('.block-item:lt(16)').each(function(){
//^^ do for every instance less than the 16th (starting at 0)
$(this).delay(delay).animate({
opacity:0
},500);
delay += 500;
});
});
答案 3 :(得分:0)
是的,你可以像这样
$(document).ready(function(){
var delay = 0;
setTimeout(function() {
$('.block-item:lt(16)').each(function(){
//^^ do for every instance less than the 16th (starting at 0)
$(this).delay(delay).animate({
opacity:0
},500);
delay += 500;
});
}, 5000);
});
答案 4 :(得分:0)
你是说在每次初次通话之前等待5秒?如果是,请使用setTimeout
setTimeout Reference
<强> Live Demo 强>
$(document).ready(function(){
var delay = 0;
// Wrap the function with setTimeout
setTimeout(function(){
$('.block-item:lt(16)').each(function(){
//^^ do for every instance less than the 16th (starting at 0)
$(this).delay(delay).animate({
opacity:0
},500);
delay += 500;
});
}, 5000); // 5000 = 5 seconds
});
答案 5 :(得分:0)
您可以使用setInterval
方法来实现此目标。
$(document).ready(function(){
var count = 0;
var $blockItems = $('.block-item:lt(16)');
var timer;
timer = setInterval(function(){
if(count == 16){
clearInterval(timer);
return;
}
$blockItems.eq(count).animate({
opacity:0
},500);
count++;
}, 500);
});
答案 6 :(得分:0)
使用一些新功能http://jsfiddle.net/7czu4/
function HideItems(items, delay) {
$(items[0]).fadeOut()
.delay(delay)
.promise()
.done(function() {
items.splice(0, 1);
if (items.length > 0)
{
HideItems(items, delay);
}
});
}
var items = $(".item");
HideItems(items, 5000);