.remove()之后仍然存在元素?

时间:2013-07-30 15:18:28

标签: jquery

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

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

但那也没有做到。

2 个答案:

答案 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