1

我想延迟在 li a 元素中滑动图像的动画。我的想法是,我可以使用计数器 (i) 遍历每个 li 元素,并设置动画的超时时间:1000 + i * 50

不幸的是,只有最后一个 li 元素会被动画化。这是为什么?

li = $('nav ul li').get();
lic = li.length;

$('nav ul li a .icon').hide();

t = [];
for (i = 0; i < li.length; i++) {
    var obj = $('nav ul li')[i];

    t[i] = setTimeout(function() {
        $(obj).children('a').children('.icon').slideDown();
    }, 1000 + i * 50);

    delete obj;
}
4

2 回答 2

3

这应该没问题:

jsBin 演示

$('nav ul li a .icon').hide();

$('nav ul li').each(function( i ){       
    $(this).find('.icon').delay(i*300).slideDown();    
});
于 2012-06-27T21:24:38.427 回答
0

试试这个,这不是一个完整的代码,并且未经测试。请借用这个逻辑..

$('nav ul li').each(function {
    $(this).find("a>.icon").hide();
    t[i] = setTimeout(function() {
        $(this).find("a>.icon").slideDown();
    }, 1000 + i * 50);
});
于 2012-06-27T21:29:38.533 回答