【发布时间】:2016-09-24 23:12:10
【问题描述】:
我正在尝试为序列中的所有 LI 设置动画,但代码会同时为所有 LI 设置动画。
我在任何地方都找不到有用的回复,我知道如何在 Jquery 中执行此操作,但这里没有加起来。
我尝试将超时添加到事件处理程序和被调用函数,这两种方法都不起作用。
这是函数
function changeLi() {
setTimeout(function() {
[].forEach.call(li, function(li) {
li.style.transform = "translateX(200px)";
}, 900);
});
}
codepen 链接:
http://codepen.io/damianocel/pen/PzYXmv
我尝试将 stopPropagation/preventDefault 添加到调用中,但这也无济于事。
【问题讨论】:
-
你的大括号匹配搞砸了。请修复它并正确缩进您的代码。
-
您似乎对how setTimeout works 有一个根本性的误解。还有stopPropagation 和preventDefault,它们都只适用于事件。
-
您使用
setTimeout就像它像sleep一样工作。有关解决方案,请参见 [此处](Python while 循环转换为 Javascript)。 -
setTimeout()只会控制动画何时开始,设置style.transform时。动画本身将独立于超时运行和完成。 – Is there a callback on completion of a CSS3 animation? -
@hamms 我尝试了 stopPropagation,因为整个 UL 都是动画的。下一个问题是“this”范围,Jquery 负责处理,但在这里,显然有些地方不对。
标签: javascript