出于某种原因,我无法在每个功能完成后运行一个函数。这是我尝试过的,每个函数都可以正常工作,但是当它完成时它不会运行另一个函数。
var delay = 0;
$('h1 span').each(function() {
var $span = $(this);
setTimeout(function() { $span.addClass('visible'); }, delay+=1000, function(){
$('header').addClass('visible');
});
});
答案 0 :(得分:1)
如果我理解你的预期行为,你可以在延迟函数中使用以下逻辑:
var delay = 0;
$('h1 span').each(function () {
var $span = $(this);
setTimeout(function () {
$span.addClass('visible');
// if $span is last of 'h1 span' matched set
if ($span.is($('h1 span').last())) {
$('header').addClass('visible');
}
}, delay += 1000);
});
答案 1 :(得分:1)
我认为你想要做的就是http://jsfiddle.net/gon250/8mdodywe/
setTimeout()函数不支持两个回调。
$.when($('span').each(function() {
$(this).addClass('visible');
})).then(function(){
$('header').addClass('visible');
});
答案 2 :(得分:0)
我想这就是你想要的:
var delay = 0;
$('h1 span').each(function() {
var $span = $(this);
setTimeout(function() { $span.addClass('visible'); }, delay+=1000);
});
setTimeout(function() { $('header').addClass('visible'); }, delay);
答案 3 :(得分:0)
我假设你想要两次超时?在您的代码中,似乎您希望在"延迟0"之后执行第一个超时。在这种情况下,只需执行第一个"回调"并为第二个设置一个时间。 如果你确实想要两次超时(每次超过1000毫秒):
$('h1 span').each(function() {
var $span = $(this);
setTimeout(
function() {
$span.addClass('visible');
setTimeout(
function() {
$('header').addClass('visible');
},
1000
);
},
1000
);
});