0

ユーザーがチェックボックスをクリックするたびにウェブサイトの合計価格を加算しようとしています.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 />

これが機能しないばかげた理由があるように感じます。どんな助けでも大歓迎です!

4

1 に答える 1

0

その理由は、ASP.NET を使用しているため、ID が動的に生成され$this.attr("id")、スパン クラスとは異なる値を返すためです。

var target = $("span[class='" + $this.attr("id") + "']");

たとえば、 classCheckBox7でスパンを検索すると、 のようなものが$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") + "']");
于 2013-09-04T04:06:21.963 に答える