2013-09-04 2 views
0

Я пытаюсь добавить общую цену на моем сайте всякий раз, когда пользователь нажимает на флажок - используя некоторый jQuery, но только получая $ NaN, когда я добавляю результаты. Окно предупреждения ближе к концу моего сценария показывает очень странные результаты, а также (ведущие 0s, я не знаю, почему)Проверка нескольких цен, увеличение общей стоимости метки

Вот мой текущий код:

$("#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 /> 

Я чувствую, что есть глупая причина, по которой это не работает. Любая помощь очень ценится!

+2

кажется хорошо мне http://jsfiddle.net/arunpjohny/Ue2mr/1/ –

ответ

0

Причина в том, что вы используете ASP.NET, так что идентификаторы генерируются динамически и $this.attr("id") возвращает значение, отличное от класса диапазона в

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

Например, когда вы смотрите на пролете с классом CheckBox7, но $this.attr("id") возвращает что-то вроде {prefix}CheckBox7.

Решение 1: просто заменить эту строку с:

var target = $this.next(); 

Решение 2:

В случае, если вам нужно найти по классам, используйте другой атрибут, кроме идентификатора. Как это в фоновом коде:

CheckBox7.Attributes["myspanclass"] = "CheckBox7"; 
CheckBox1.Attributes["myspanclass"] = "CheckBox1"; 
CheckBox2.Attributes["myspanclass"] = "CheckBox2"; 

и заменить эту строку с:

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