【发布时间】:2011-11-12 01:08:13
【问题描述】:
我在 stackoverflow 问题中发现了抖动效果 (here)
代码如下;
jQuery.fn.shake = function(intShakes, intDistance, intDuration) {
this.each(function() {
$(this).css("position","relative");
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
return this;
};
但我需要一种方法来添加回调函数(或任何其他简单的方法),以便在效果之前更改摇动元素的边框颜色并在动画完成后切换到原始颜色。
我尝试如下但没有机会(边框立即变成原来的颜色)
jQuery.fn.shake = function(intShakes, intDistance, intDuration,callback) {
this.each(function() {
$(this).css("position","relative");
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
if(callback) callback();
return this;
};
然后这样调用
$elem.css('borderColor','red');
$elem.shake(3,5,500,function(){
$elem.css('borderColor','#a6caf0');})
您可以找到一个 JSFiddle 示例 here。(如果您在 fiddle 中取消回调函数,您会看到边框正确变为红色但回调失败。)
现在谢谢...
【问题讨论】:
-
查看 jsFiddle 中的“整理”按钮...
-
@ŠimeVidas - 在哪里?我从来没有听说过。
-
@JaredFarrish 在上方工具栏中的 jsFiddle 中...它在按钮上。
-
@ŠimeVidas - 圣牛,太棒了。我实际上(他)在看萤火虫。我当时想,在哪里???
-
@Šime Vidas - 我做了,但代码看起来已经很整洁了..
标签: jquery animation callback effect shake