Суммирование значений включенных чекбоксов

программирование JavaScript jQuery

Имеется ряд чекбоксов, у которых есть значения в виде цен.

<label for="opt1">
<input type="checkbox" data-price="50" id="opt1" />
Открытка
</label>
<label for="opt2">
<input type="checkbox" data-price="500" id="opt2" />
Медвежонок
</label>
<label for="opt3">
<input type="checkbox" data-price="300" id="opt3" />
Конфеты
</label>
<label for="opt4">
<input type="checkbox" data-price="160" id="opt4" />
Презервативы
</label>
<h3>0</h3>

При включении чекбоксов их значения цен должны суммироваться и отображаться в заголовке h3.

Есть такой код:

$(document).ready(function() {

$('label input').each(function(indx) {
var price = $(this).attr('data-price');

$(this).change(function(e){

if(this.checked) {

$('h3').html(price);

} else {
???
}

});
});

Этот код просто отображает в поле h3 значение одного включенного чекбокса. Если включить второй чекбокс, то содержание h3 заменится на значения второго чекбокс и т.д. Как можно сделать сложение значений включенных чекбоксов?

});
Ответы:
$('label input').change(function () {
       var price = 0;
       $('label input').each(function () {
               if (this.checked) price += +$(this).attr('data-price');
       });
       $('h3').html(price);
});


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.