1

「要素が追加、編集、または削除されたときに要素の値を合計しようとしています。値を含む要素を削除した後、合計を更新するのに苦労しています。

jQuery 関数 .remove() のラッパー関数を起動する「onClick」イベントがある削除ボタンがあります。

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

ID の代わりにクラス名を使用してみてください

于 2013-07-30T15:48:15.857 に答える
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 に答える