'我试图在添加,编辑或删除元素时对元素的值求和。在删除包含该值的元素后,我很难更新总和。
有一个删除按钮,其上有一个“onClick”事件,它将为jQuery函数.remove()激活一些包装器函数。
HTML:
onClick="RemoveElementById('someId'); return false;"
使用Javascript:
function sumEverything() {
var total = 0;
$('span[id*="days"]').each(function() {
var value = $(this).html;
if (IsNumeric(value)) {
total += parseFloat(value);
}
});
$('.sumClass').html(total);
}
我正在尝试在删除元素后更新总和。所以我尝试了这个:
$(.ButtonArea input).click(function() {
sumEverything();
});
问题是总和保持不变...有没有办法“知道”何时正确删除元素?我试过了,例如:
onClick="RemoveElementById('someId'); return false; sumEverything();"
但那也没有做到。
答案 0 :(得分:0)
首先,我使用的方法不同于在每个元素中定义onClick。
假设你现在有一些看起来像这样的元素;
<div id="someId" onClick="RemoveElementById('someId'); return false;"></div>
<div id="someId1" onClick="RemoveElementById('someId1'); return false;"></div>
<div id="someId2" onClick="RemoveElementById('someId2'); return false;"></div>
将其更改为此(向每个元素添加一个类,并删除onClick);
<div id="someId" class="uniqueClassName"></div>
<div id="someId1" class="uniqueClassName"></div>
<div id="someId2" class="uniqueClassName"></div>
然后在JavaScript中添加onClick侦听器;
// The reason I'm using .live() instead of .on() is because .on() only
// affects elements that exists in the document when DOM is loaded and
// not elements that are added after page load
$(".uniqueClassName").live('click', function() {
// Either do this
var id = $(this).attr('id');
RemoveElementById(id);
// Or this
$(this).remove();
// After removing the element calculate total
sumEverything();
});
它现在不工作的原因是因为你在同一个元素上有2个onClick,而更新sum()的那个在删除元素之前执行,这是我从我能看到的猜测(你可以总是通过使用console.log())来测试这个。
答案 1 :(得分:0)
尝试使用类名而不是ID