Поскольку изменение события не вызывается, когда документ готов.
Вы должны переместить код для вычисления суммы в другую функцию calculateTotal
и вызвать в обоих случаях ready
и change
как
$(document).ready(function() {
calculateTotal();
})
$('.calculating').change(function () {
calculateTotal();
});
function calculateTotal(){
var price = 0;
$('.calculating').each(function(){
if ($(this).is(":checked")) {
price += parseInt($(this).attr("data-price"), 10);
}
})
$(".price").text(price);
}
$(document).ready(function() {
calculateTotal();
})
$('.calculating').change(function () {
calculateTotal();
});
function calculateTotal(){
var price = 0;
$('.calculating').each(function(){
if ($(this).is(":checked")) {
price += parseInt($(this).attr("data-price"), 10);
}
})
$(".price").text(price);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="apple" data-price="100" class="calculating" checked><label for="apple">Apple - 100$</label>
<br />
<input type="checkbox" id="banana" data-price="100" class="calculating"><label for="banana">Banana - 100$</label>
<br />
Total price: <span class="price">0</span>$