【发布时间】:2010-04-11 02:15:29
【问题描述】:
我在等我去的时候
$.each($(something).find(something), function(){
$(this).delay(1000).fadeOut();
});
然后对于每个匹配的元素,我都会在它消失之前延迟一秒钟。但我得到的是一秒钟的延迟,然后一切都消失了。现在是凌晨 3 点,我无法思考。请帮忙
【问题讨论】:
标签: jquery
我在等我去的时候
$.each($(something).find(something), function(){
$(this).delay(1000).fadeOut();
});
然后对于每个匹配的元素,我都会在它消失之前延迟一秒钟。但我得到的是一秒钟的延迟,然后一切都消失了。现在是凌晨 3 点,我无法思考。请帮忙
【问题讨论】:
标签: jquery
这将起作用,使用 jQuery 对象作为参数调用它:
function fadeAll(elems) {
var i=-1;
function next() {
i = i+1;
if (i < elems.length)
$(elems[i]).delay(1000).fadeOut(next);
}
next();
}
你可以在工作中看到它here。
【讨论】:
next 而不是 next()。
如果我对您的问题的解释正确,您希望事情在一秒钟内消失吗?如果是这样,你想要的是$(this).fadeOut(1000);,它设置淡入淡出的持续时间;执行delay(1000) 只需等待一秒钟在它开始您的fadeOut() 操作。
【讨论】:
$(something).find(somethingelse).fadeOut(1000) -- 一次性完成(不需要each)
这应该是基本思路:
var set = $(something).find(something);
var delayFade = function(){
$(this).delay(1000).fadeOut(400, nextDelayFade);
};
var i = 0;
var nextDelayFade = function()
{
if(i < set.length)
{
$(set[i++]).each(delayFade);
}
};
nextDelayFade();
【讨论】: