.html()
类似和.css()
不使用动画队列的函数,因此您应该使用.queue()
在其他动画之间安排这些调用,然后.stop(true, true)
在再次按下开始按钮时使用取消队列。
绝对不要与 jQuery 动画混合setTimeout
使用——它不会可靠地工作。
请参阅http://jsfiddle.net/alnitak/EKNAd/以了解您的小提琴已更正为使用 jQuery 动画队列:
$('#target').stop(true, true)
.html("This is one.")
.css('color', '#000000')
.fadeIn(1000).fadeOut(2000).queue(function() {
$(this).html("This is two.").css('color', '#dc0000');
$(this).dequeue();
}).fadeIn(1000).fadeOut(2000).queue(function() {
$(this).html("This is three").css('color', '#990099');
$(this).dequeue();
}).fadeIn(1000).fadeOut(2000);
此外,我之前发布了这个函数,以允许调用任何jQuery 函数,就好像它已排队一样:
(function($) {
$.fn.queued = function() {
var self = this;
var func = arguments[0];
var args = [].slice.call(arguments, 1);
return this.queue(function() {
$.fn[func].apply(self, args).dequeue();
});
}
}(jQuery));
请参阅http://jsfiddle.net/alnitak/AYMY7/为您的函数重写以使用它:
$('#target')
.stop(true, true)
.html('This is one')
.css('color', '#000000')
.fadeIn(1000)
.fadeOut(2000)
.queued('html', 'This is two')
.queued('css', 'color', '#dc0000')
.fadeIn(1000)
.fadeOut(2000)
.queued('html', 'This is three')
.queued('css', 'color', '#990099')
.fadeIn(1000)
.fadeOut(2000);