希望这是您可以使用或帮助您的东西:
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
“价格”的元素更改为具有“价格”的元素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>
的内容。