我有一张桌子,我想要 将行淡出,然后将其删除(工作正常)
删除后,我总结所有列并更新总数 那一点不起作用。它是在删除行之前总结的
如何同步运行?
$("#tr_invoice_" + id).fadeOut("slow", function() {
$("#tr_invoice_" + id).remove();
tot = $("[name^=amount]").sum();
confirm("got tot: " + tot);
});
在阅读@pulses评论之后,我去改变了周围的事情并手动从总和中删除了“删除的行”的数量,但是这开始总共减少了2 x当前行数。
所以我将它还原并将确认更改为$(“#tag”)。html(tot)。并且它开始工作正常,所以我不确定这是我的语法错误或确认与它有关,但无论哪种方式它现在正在工作
所以鉴于此,我应该删除这个问题,还是保持原样???
答案 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]")
更精确一点。目前,它可以匹配很多节点,甚至可以匹配表外的一些节点。