jQuery:隐藏的div需要重新出现

时间:2013-05-16 13:20:30

标签: jquery timeout hide show

我有几个产品在div中彼此相邻排列,我正在使用这个脚本来逐个隐藏。

在某些时候他们都已经消失了,我想让他们全部重新出现。我试过一些.show's但我可能错了。

有人可以看看,看看需要做些什么才能使脚本按预期工作?

<script>
 $(document).ready (function() {
        "$('.add1').each(function(index) {
            setTimeout(function(el) {
                el.hide('slow');
            }, index * 2000, $(this));
        });
    });
</script>

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

$(document).ready (function() {
    var $add1 = $('.add1').each(function(index, el) {
        setTimeout(function() {
            $(el).hide('slow');
        }, index * 2000);
    });
    setTimeout(function() {
        $add1.show('slow');
    }, $add1.length * 2000);
});

也就是说,首先排队所有超时以隐藏元素,然后排队另一个超时以再次显示它们。

演示:http://jsfiddle.net/tsuQd/

当然,这会立刻显示出来。要一次显示一个,你可以这样做:

$(document).ready (function() {
    var $add1 = $('.add1'),
        count = $add1.length;        
    $add1.each(function(index, el) {
        setTimeout(function() {
            $(el).hide('slow');
        }, index * 2000);
        setTimeout(function() {
            $(el).show('slow');
        }, (count + index) * 2000);
    });
});

演示:http://jsfiddle.net/tsuQd/1/

请注意,我已经调整了您在超时回调中获取对元素的引用的方式,因为使用setTimeout()的第三个参数并不适用于所有浏览器。