检查所有li的动态删除时间

时间:2012-06-05 07:18:15

标签: jquery

我有一个函数可以处理属性列表(My Shortlist)的各种类型的行为,这是一个<ul><li>设置。一种类型的行为是当您单击每个项目中的按钮时删除属性列表项<li>,但该工作正常,但是我的if语句检查所有项目何时被删除无效。

你能告诉我我做错了什么吗?这是函数的一部分,它通过按钮的onclick事件和狡猾的if语句处理删除项目:

// Remove an item from the shortlist
$(this).find('.btn-minus').click(function() {
    var btnRemove = $(this);
    var propTile = $(this).parents('.property-tile');
    var propList = $('#property-listings');
    // If IE 8 / 7
    if ($('html').hasClass('lte8')) {
        propTile.hide('slide', 300, function()  {
            btnRemove.data("tooltip").hide();
        });
    }
    // All other browsers
    else {
        propTile.fadeOut(200, function()  {
            btnRemove.data("tooltip").hide();
            $(this).remove();
        }); 
    }
    if (propTile.length === 0) {
        propList.remove();
    }
});

这是对函数的调用:$(".my-shortlist").myShortlist();其中.my-shortlist<ul>元素。

由于

2 个答案:

答案 0 :(得分:0)

您已将'.property-tile'元素放在变量中,因此之后隐藏它们并不会从对象变量中删除它们。因此,您需要重新执行选择器。

if ($(this).parents('.property-tile').length == 0) {
    propList.remove();
}

此外,就像RogerLindsjö所提到的那样,在实际隐藏这些元素之前,您需要进行此检查。你需要在hide / fadeOut的回调中执行此操作。

答案 1 :(得分:0)

我得到了它,我必须使用<li>方法检测最后nextAll(),然后fadeOut效果在最后<li>删除后{{1} }}。这是完整的代码:

propList

干杯