うまくいけば、これはあなたが使用またはあなたを助けることができるものです:
http://jsfiddle.net/VWRAd/
$(".cell").on("click", "input:checkbox", function () {
var $this = $(this);
var $total = $("#price");
var $target = $("label[for='" + $this.attr("id") + "']");
var item_value = +($target.html().replace("$", "") || 0);
var cur_total = +($total.html().replace("$", "") || 0);
if ($this.prop("checked") === true) {
cur_total += item_value;
} else {
cur_total -= item_value;
}
$total.html("$" + cur_total);
});
class
「price」の要素を「price」の要素に変更したことに注意してid
ください。いくつかの「価格」要素があると予想しない限り、それは理にかなっています。
そして、これを行う別の可能な方法があります...どちらが良いかわかりません:
http://jsfiddle.net/VWRAd/1/
$(".cell").on("click", "input:checkbox", function () {
var $items = $(".cell").find("input:checkbox:checked");
var $total = $("#price");
var cur_total = 0;
$items.each(function () {
var $this = $(this);
var $target = $("label[for='" + $this.attr("id") + "']");
var item_value = +($target.html().replace("$", "") || 0);
cur_total += item_value;
});
$total.html("$" + cur_total);
});
考慮すべき点がいくつかあります。アイテムを表示するときに、アイテムの実際の値から「$」を分離することは理にかなっています...「$」で値を格納していないと確信しているので、同様の構造が必要になる場合がありますに<label for="whatever">$<span class="the-value">100</span></label>
。jQueryセレクターロジックが少し変更されますが、.replace
頻繁に使用する必要がなくなります。また、他の誰かがすでに指摘しているように、チェックボックスのvalue
属性にアイテムの価格を保存し、その方法で取得する方が(対応する<label>
コンテンツを見つけるよりも)間違いなく簡単です。