【发布时间】:2013-06-20 23:30:29
【问题描述】:
我正在尝试传递元素索引并延迟滑动每个列表项内容
这是我的代码
for(var i = 1; i <= $("#colContainer li").length ; i++) {
var el = $("#colContainer li:nth-child(" + i + ") .colContent");
var delay = function() {
slide(el);
};
setTimeout(delay, 10);
function slide(el){
el.slideUp();
};
};
但每次只有最后一个向上滑动
我期望他们从索引 1 滑动到末尾延迟
我也试过了
index = $(this).parent("li").index();
for(var i = 1; i <= $("#colContainer li").length ; i++) {
(function(i) {
var el = $("#colContainer li:nth-child(" + i + ") .colContent");
var delay = function() {
slide(el);
};
setTimeout(delay, 10);
function slide(el){
el.slideUp();
};
})(i);
};
但它们都同时滑动,我想要索引 1 幻灯片,然后是索引 2 和 ...
对于循环有什么办法吗??
【问题讨论】:
-
变量和闭包的标准错误(超时函数是一个闭包,但这里我们真的是另一个函数范围来创建一个new变量绑定) - 见 stackoverflow.com/questions/3273210/… , stackoverflow.com/questions/341723/… 重要的是:只有一个外部变量称为
el。
标签: javascript jquery settimeout