我经常看到这样的问题,并且有多种解决方案。我正在尝试想出一些可以重复使用的简短内容。我的问题是,鉴于以下代码,我是否需要 clearTimeout()
以及在哪里执行此操作?还有,你有什么需要改进的地方吗?这段代码的性能有多好或多坏?
http://jsfiddle.net/elclanrs/fQX8M/15/
var fade1by1 = function ($elms, props) {
props = props || {};
props.delay = props.delay || 1; // s
props.speed = props.speed || 400; // ms
props.ease = props.ease || 'linear';
for (var i=0, d=0, l=$elms.length; i<l; i++, d+=props.delay*1000) {
(function (i, d) {
// Using `delay()` instead of `setTimeout()`
// as Alexander suggested
$elms.eq(i).delay(d).fadeIn(props.speed, props.ease);
})(i, d);
}
};
最佳答案
我认为您不需要window.clearTimeout
,因为您似乎不想停止动画。如果您仍然犹豫不决,那么使用.delay怎么样? ,它显然也使用了 window.setTimeout
。
var fade1by1 = function ($elms, speed) {
speed = speed || 1; // Seconds
for (var i=0, s=0, l=$elms.length; i<l; i++, s+=speed*1000) {
$elms.eq(i).delay(s).fadeIn('slow');
}
};
查看实际效果 here .
关于javascript - 依次显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406743/