在JQuery中使用.hide和.remove函数不会从DOM中删除项目

时间:2014-05-17 23:39:32

标签: javascript jquery

我试图用JQuery删除一个元素,但我仍然希望转换.hide函数。我提出了这个解决方案:

$("#box-"+likeid).hide('slow', function(){ $("#box-"+likeid).remove(); });

然而,在此之后,我想迭代一个索引很重要的项目列表(我使用.each)。所有这些项都具有相同的类,因此我使用该类迭代项并从中查找索引。

我发现,当我使用上述隐藏/删除解决方案时,该项目仍被计为带索引的项目。但是,当我只使用普通的.remove时,它不计算在内,它的行为与我想要的一样。

但回到前一点,我喜欢.hide转换。有没有解决的办法?谢谢。

编辑:

这是完整的Jquery函数:

$(".remove-item").click(function(event) {

      event.preventDefault();

      var id = $(this).find("i.fa-times").attr('id');

      var likeid = id.replace( /^\D+/g, '');

      var elem = $("#box-"+likeid).hide('slow', function() { $("#box-"+likeid).remove(); });

      $('.spacer').remove();

      $('.boxBg').not(elem).each(function() {
              $(this).removeClass('last');

              if (($(this).index() + 1) % 4 == 0){

                $(this).addClass('last');
                $('<div class="spacer"></div>').insertAfter($(this));
              }


      });

});

基本上,我希望每个第四个元素都有这个类&#34;最后&#34;这表示一个新行。当一个被删除时,我想更新它。但是,使用此功能时,不会将最后一个分配给正确的。这是一次性的,即使使用这种方式,你在下面分享。

1 个答案:

答案 0 :(得分:1)

这是因为回调函数后来执行了600ms(),您可以将each循环移动到回调中,或者使用{{1}从集合中排除元素方法:

not