【发布时间】:2012-03-23 07:17:14
【问题描述】:
我有以下 Coffeescript 代码:
# Coffeescript
setMessage = (message, options = {}) ->
t = statusArea.text(message)
if options['fade']
t.addClass('yellow')
t.fadeOut 4000, ->
$(this).removeClass 'yellow'
// Javascript
setMessage = function(message, options) {
var t;
if (options == null) options = {};
t = statusArea.text(message);
if (options['fade']) {
t.addClass('yellow');
return t.fadeOut(4000, function() {
return $(this).removeClass('yellow');
});
}
};
这意味着在 LI 元素内显示状态消息。如果options['fade'] 设置为任何值,那么我调用淡入淡出的东西。在我的程序流程中发生的第一件事是我发出一个 Ajax 调用来填充一个 SELECT 并将一个带有淡入淡出(即,options['fade'] 设置为 true)的“进行远程调用”消息发布到状态区域。这可能几乎是瞬时的,也可能需要一段时间。这取决于结果的大小和网络流量。填充 SELECT 后,我会发布一条“准备就绪”的消息而不会淡出。
当响应几乎是瞬时的时,就会出现问题。在这种情况下,文本被替换为“就绪”,但动画会继续,淡出消息(即淡出 LI 元素)。
在开始另一个转换之前,是否有一种可接受的方式来终止上一个转换(如果有)?
【问题讨论】:
-
请注意,我在标题中说的是 Zepto,而不是 jQuery。这里引用的答案涉及 jQuery,但不是 Zepto,它缺少 stop() 函数。我在github.com/sxross/zepto/commit/… 的分支中添加了一个 stop() 函数,但希望有更好的方法。
标签: javascript coffeescript zepto