[英]jQuery to check state of all inputs on page load
我有這個簡單的 jQuery 價格計算器,但它不檢查是否在頁面加載時選擇了輸入。
點擊 Banana 后會看到 Apple 被選中,但是如何讓它在開始時檢查所有內容呢?
我試圖在function
之前添加ready
和on load
,但由於某種原因它不起作用。
$(document).ready(function() { $('.calculating').change(function () { 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>$
我可以通過添加.change();
在代碼的末尾。 我想這是最簡單的解決方案。
$(document).ready(function() { $('.calculating').change(function () { var price = 0; $('.calculating').each(function(){ if ($(this).is(":checked")) { price += parseInt($(this).attr("data-price"), 10); } }) $(".price").text(price); }).change(); })
<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>$
因為文檔准備好時沒有調用事件更改。
您應該將計算總計的代碼移動到另一個 function 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>$
而不是 $(this).is(":checked") 嘗試 $(this).prop('checked')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.