隐藏元素的顺序相反

时间:2015-04-16 06:26:41

标签: jquery jquery-ui

我有一些通知,分类在某些组中。当我点击“X”清除移动操作系统(样式)中该组中的所有通知时,我想要。以相反的顺序延迟1秒。

到目前为止,我已经这样做了:

$(document).ready(function () {
    $("#activity a.close-btn").click(function () {
        $.fn.reverse = [].reverse;
        var title = $(this).parent();
        var notifications = $(this).parent().next('ul');

        notifications.find('li').reverse().each(function (i, value) {
            if (i != 0) {
                setTimeout(function () {
                    $(value).hide('slide', {
                        direction: 'right'
                    }, 1000);
                }, 1000);
            } else {
                $(value).hide('slide', {
                    direction: 'right'
                }, 1000);
            }
        });
    });
});

它删除了该组的第一个元素,然后(一秒钟后)删除其余元素。

这是一个小提琴: http://jsfiddle.net/FakeHeal/65spykvr/

1 个答案:

答案 0 :(得分:2)

问题是超时,你正在调用延迟1秒的所有元素

$(document).ready(function () {
    $("#activity a.close-btn").click(function () {
        $.fn.reverse = [].reverse;
        var title = $(this).parent();
        var notifications = $(this).parent().next('ul');

        notifications.find('li').reverse().each(function (i, value) {
            if (i != 0) {
                setTimeout(function () {
                    $(value).hide('slide', {
                        direction: 'right'
                    }, 1000);
                }, (i + 1) * 1000);
            } else {
                $(value).hide('slide', {
                    direction: 'right'
                }, 1000);
            }
        });
    });
});