jquery淡出,删除,然后下一步

时间:2010-01-07 09:47:37

标签: jquery jquery-ui

我有一张桌子,我想要 将行淡出,然后将其删除(工作正常)

删除后,我总结所有列并更新总数 那一点不起作用。它是在删除行之前总结的

如何同步运行?

$("#tr_invoice_" + id).fadeOut("slow", function() { 
  $("#tr_invoice_" + id).remove();      
  tot = $("[name^=amount]").sum(); 
  confirm("got tot: " + tot);                           
});

在阅读@pulses评论之后,我去改变了周围的事情并手动从总和中删除了“删除的行”的数量,但是这开始总共减少了2 x当前行数。

所以我将它还原并将确认更改为$(“#tag”)。html(tot)。并且它开始工作正常,所以我不确定这是我的语法错误或确认与它有关,但无论哪种方式它现在正在工作

所以鉴于此,我应该删除这个问题,还是保持原样???

4 个答案:

答案 0 :(得分:1)

请在删除后尝试延迟:

$("#tr_invoice_" + id).fadeOut("slow", function() { 
  $("#tr_invoice_" + id).remove();      
  setTimeout(function(){
     tot = $("[name^=amount]").sum(); 
     confirm("got tot: " + tot);                           
  },100);
});

答案 1 :(得分:1)

将其更改为此

$("#tr_invoice_" + id).fadeOut("slow", function() { 
  $("#tr_invoice_" + id).remove(function(){
    tot = $("[name^=amount]").sum(); 
    confirm("got tot: " + tot);
  });
});

答案 2 :(得分:1)

如果下面的代码仍然返回相同的总数,那么肯定会像DR建议的那样添加一个流氓元素。

tot = $("[name^=amount]").not('#' + $(this).attr('id')).sum();

答案 3 :(得分:0)

根据您发布的摘录,您的代码似乎是正确的:

您正在移动动画后的元素,然后重新查询所有必要的元素并总结它们。

唯一的解释是,该元素未被删除,并且它仍以某种方式被您的查询捕获。尝试使用Firebug确认该元素实际上已被删除。

另外,尝试使$("[name^=amount]")更精确一点。目前,它可以匹配很多节点,甚至可以匹配表外的一些节点。