每当用户点击一个复选框时,我试图在我的网站上加总总价 - 使用一些jQuery,但只有在我添加结果时才收到$ NaN。我的脚本末尾附近的警告框也显示非常奇怪的结果(领先0,我不知道为什么)
这是我目前的代码:
$("#AdditionalOffers").bind("click", "input:checkbox", function () {
var $items = $("#AdditionalOffers").find("input:checkbox:checked");
var $total = $("#totalPrice");
var cur_total = 0;
$items.each(function () {
var $this = $(this);
var target = $("span[class='" + $this.attr("id") + "']");
var item_value = +target.text()
cur_total += item_value;
alert(cur_total);
});
$total.html("$" + cur_total);
});
因为我使用的是.NET,所以我的标记看起来像这样:
<asp:CheckBox ID="CheckBox7" CssClass="label-for-check" Text="Lease/Sales Consultation" runat="server" /> <span class="CheckBox7">75</span> <br />
<asp:CheckBox ID="CheckBox1" CssClass="label-for-check" Text="Lease Review Advisor" runat="server" /> <span class="CheckBox1">50</span> <br />
<asp:CheckBox ID="CheckBox2" CssClass="label-for-check" Text="Starter Package" runat="server" /> <span class="CheckBox2">25</span> <br />
我觉得有一个愚蠢的原因,这是行不通的。非常感谢任何帮助!
答案 0 :(得分:0)
原因是您正在使用ASP.NET,因此ID是动态生成的,$this.attr("id")
返回的值不同于
var target = $("span[class='" + $this.attr("id") + "']");
例如,当您查找类CheckBox7
的范围时,$this.attr("id")
会返回类似{prefix}CheckBox7
的内容。
解决方案1:只需将该行替换为:
var target = $this.next();
解决方案2:
如果您需要按类查找,请使用id以外的其他属性。在代码隐藏中就像这样:
CheckBox7.Attributes["myspanclass"] = "CheckBox7";
CheckBox1.Attributes["myspanclass"] = "CheckBox1";
CheckBox2.Attributes["myspanclass"] = "CheckBox2";
用以下内容替换该行:
var target = $("span[class='" + $this.attr("myspanclass") + "']");