function doChanges(cssChanges) {
var index = 0;
function effectChanges() {
$('whatever').css(cssChanges[index].css);
if (++index < cssChanges.length) {
setTimeout(doChanges, cssChanges[index].delay);
}
}
setTimeout(effectChanges, cssChanges[0].delay);
}
4条答案
按热度按时间rdlzhqv91#
jQuery“.delay()”API是关于“效果队列”的,它实际上会立即返回。
如果你不动画CSS变化,唯一的方法就是使用“setTimeout()"。
有一件事可能会让事情变得更愉快,那就是将CSS更改构建到一个数组中:
然后,您可以使用一个例程遍历包含所需延迟的列表:
如果您愿意,可以将其转换为插件,不过如果您要这样做,最好弄清楚如何使您的插件与jQuery中现有的动画队列设施沿着运行。
5w9g7ksd2#
第一章第一章第一章第二章。
这将为您工作:)
jsFiddle .
更新
您还可以将其转换为jQuery插件。
jsFiddle .
ig9co6j13#
css
不是一个效果,它会立即发生。如果您希望在交错的时间多次更改css
,setTimeout
正是您想要的:Live example
如果你想用
css
做的事情可以用animate
来代替(例如,数值属性而不是上面提到的颜色),那么如果你用animate
代替css
,你的代码基本上可以工作。Live example
bhmjp9jg4#
您仍然可以使用setTimeout,只需要几个即可。
或者,您可以使用持续时间为
0
的.animate()
来代替.css()
:示例:http://jsfiddle.net/6sewU/
请注意,如果使用
.animate()
设置颜色,则需要安装jQueryUI。