动画后jquery切换类不起作用

时间:2013-05-20 21:35:34

标签: javascript jquery css css3 animation

我有这个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('?')代码是否正常工作 有什么问题?

1 个答案:

答案 0 :(得分:3)

$('html, body')选择两个元素,同时触发两个回调,相互抵消,尝试$('body').animate({ ....,看看它是如何工作的。如果需要选择这两个元素,请使用标志以确保回调函数仅运行一次。

BIN

或根据undefined的建议,使用promise:

$(document).click(function() {
  $('body, html').animate({ scrollTop: top }, '400', 'swing').promise().done(startBlink)
});