我有这个javascript代码:http://jsbin.com/orenim/4/edit
blinkTimes = 0;
function blink () {
$('.a').toggleClass('b');
blinkTimes --;
if (blinkTimes > 0) {
setTimeout(blink, 500);
}
}
function startBlink() {
//alert('?');
blinkTimes = 4;
blink();
}
$(document).click(function() {
$('html, body').animate({ scrollTop: top }, '400', 'swing', startBlink);
});
这应该在动画后立即切换'.b'
类。由于某些未知原因,'.a'
元素未与类'.b'
切换。如果我取消注释alert('?')
代码是否正常工作
有什么问题?
答案 0 :(得分:3)
$('html, body')
选择两个元素,同时触发两个回调,相互抵消,尝试$('body').animate({ ....
,看看它是如何工作的。如果需要选择这两个元素,请使用标志以确保回调函数仅运行一次。
或根据undefined的建议,使用promise:
$(document).click(function() {
$('body, html').animate({ scrollTop: top }, '400', 'swing').promise().done(startBlink)
});