1

'我试图在添加、编辑或删除元素时对元素的值求和。在删除包含该值的元素后,我很难更新总和。

有一个删除按钮,上面有一个“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();"

但这也没有完全做到。

4

2 回答 2

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())

于 2013-07-30T15:33:01.150 回答
0

尝试使用类名而不是 ID

于 2013-07-30T15:48:15.857 回答