【发布时间】:2014-05-18 08:31:39
【问题描述】:
我正在尝试使用 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));
}
});
});
基本上,我希望每四个元素都有一个表示新行的“last”类。当一个被删除时,我想更新它。但是,在使用它时,它不会将 last 分配给正确的。即使使用您在下面分享的这种方式,它也是一次性的。
【问题讨论】:
-
将循环移动到回调中。
-
@undefined,您应该将其发布为答案。效果很好。
-
那么将 .each 循环移动到函数中?
-
@user1072337 完全正确。
-
是的,这是一个异步操作,回调在600(slow)毫秒后执行。
标签: javascript jquery