我是jQuery的新手,并且拥有使用Prototype的一些经验.在Prototype中,有一种"闪现"元素的方法 - 即.用另一种颜色短暂地突出显示它并使其淡化回正常,以便用户的眼睛被吸引到它.在jQuery中有这样的方法吗?我看到fadeIn,fadeOut和animate,但我看不到像"flash"那样的东西.也许这三者中的一个可以与适当的输入一起使用?
1> etlds..:
我的方式是.fadein,.fadeout .fadein,.fadeout ......
$("#someElement").fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);
我在fadeIn,fadeOut序列之前使用了一个延迟,比如`$('..').delay(100).fadeOut().fadeIn('slow')`
不是最美丽的解决方案,但简短,易于理解,并且不需要UI /效果.太好了!
这种方法的问题是这些事件可能相互踩踏.您应该将每个后续的fadeIn和fadeOut放在各自的回调中.例如:`var $ someElement = $("#someElement"); $ someElement.fadeIn(100,function(){$ someElement.fadeOut(100,function(){/*...etc...*/}}})`
2> curthipster..:
您可以使用jQuery Color插件.
例如,要引起对页面上所有div的注意,可以使用以下代码:
$("div").stop().css("background-color", "#FFFF9C")
.animate({ backgroundColor: "#FFFFFF"}, 1500);
编辑 - 新的和改进的
以下使用与上述相同的技术,但它具有以下额外的好处:
参数化高亮颜色和持续时间
保留原始背景颜色,而不是假设它是白色
作为jQuery的扩展,所以你可以在任何对象上使用它
扩展jQuery对象:
var notLocked = true;
$.fn.animateHighlight = function(highlightColor, duration) {
var highlightBg = highlightColor || "#FFFF9C";
var animateMs = duration || 1500;
var originalBg = this.css("backgroundColor");
if (notLocked) {
notLocked = false;
this.stop().css("background-color", highlightBg)
.animate({backgroundColor: originalBg}, animateMs);
setTimeout( function() { notLocked = true; }, animateMs);
}
};
用法示例:
$("div").animateHighlight("#dd0000", 1000);
来自.animate()的jquery文档:*所有动画属性应该是单个数值(除非如下所述); 使用基本jQuery功能无法为非数字属性设置动画.(例如,宽度,高度或左边可以设置动画,但背景颜色不能.)*所以我猜你正在使用插件而没有意识到它.
对我来说也不起作用 - 你确定这不依赖于彩色动画插件吗?http://plugins.jquery.com/project/color
我注意到它没有返回一个物体.我尝试堆叠这个小效果(EG:$("#qtyonhand").animateHighlight("#c3d69b",1500).delay(1500).animateHighlight("#76923C",5000);)并收到错误.我需要添加"return this;" 到方法的最后.
来自jquery .animate docs:`注意:jQuery UI项目通过允许对颜色等非数字样式进行动画处理来扩展.animate()方法. - 如果你想为颜色设置动画,你需要jQuery UI或者一些其他插件.
官方jQuery文档说你必须使用jQuery.Color()插件才能工作:https://github.com/jquery/jquery-color
我用