我希望有一个复选框可以检查所有其他人,但我被卡住了。我试图通过循环来做到这一点,但什么都不返回。
这是一个练习,所以我无法更改html ID。
HTML:
<p>
Price for adds: <span id="price">0 usd</span>
</p>
</div>
<div class='panel'>
<div class='panel-body'>
<form>
<div class="checkbox">
<label><input type="checkbox">All adds</label>
</div>
<div class="checkbox">
<label><input type="checkbox" data-price="3.50">Additional cheese, 3,50 USD</label>
</div>
<div class="checkbox">
<label><input type="checkbox" data-price="2.20">Salami, 2,20 USD</label>
</div>
<div class="checkbox">
<label><input type="checkbox" data-price="5.00">Additional Ham, 5 USD</label>
</div>
<div class="checkbox">
<label><input type="checkbox" data-price="4.10">pepper, 4,10 USD</label>
</div>
<div class="checkbox">
<label><input type="checkbox" data-price="3.50">Mushroms, 3,50 USD</label>
</div>
<div class="checkbox">
<label><input type="checkbox">Clear all</label>
</div>
<br>
<p>
<button class='btn btn-primary'>Submit</button>
</p>
</form>
</div>
</div>
JS:
$(function(){
$('.panel-body').on('change','input',function(e){
if($(this).parent().text()=='All adds'){
var inps = $('.checkbox input');
$(inps).each(function{
$(this).prop('checked', true)
})
var price = $('#price').html()
price = price.replace("USD", "");
price = parseFloat(price)
var add = $(this).attr('data-price')
if ($(this).prop('checked')) {
console.log($(this).text())
var totalPrice = parseFloat(add) + parseFloat(price)
$('#price').html(totalPrice.toFixed(2))
}
else {
var totalPrice = parseFloat(price) - parseFloat(add)
$('#price').html(totalPrice.toFixed(2))
}
})
})
答案 0 :(得分:0)
你有一个错字:
$(inps).each(function{
$(this).prop('checked', true)
})
你应该改变这个:
$(inps).each(function{
对此:
$(inps).each(function(){
答案 1 :(得分:0)
首先你在功能后缺少()
:
$(inps).each(function() {
$(this).prop('checked', true)
})
第二次使用trim()
删除双方$(this).parent().text().trim()
你所拥有的if
已被)}
关闭,这是错误的,只需使用)
4而不是使用each
,您可以$('.checkbox input').prop('checked', true)
:
if ($(this).prop('checked')) {
$('.checkbox input').prop('checked', true)
} else {
$('.checkbox input').prop('checked', false)
}
这允许您取消选中所有内容。
$(function() {
$('.panel-body').on('change', 'input', function(e) {
if ($(this).parent().text().trim() == 'All adds') {
if ($(this).prop('checked')) {
$('.checkbox input').prop('checked', true)
} else {
$('.checkbox input').prop('checked', false)
}
var price = $('#price').html()
price = price.replace("USD", "");
price = parseFloat(price)
var add = $(this).attr('data-price')
if ($(this).prop('checked')) {
console.log($(this).text())
var totalPrice = parseFloat(add) + parseFloat(price)
$('#price').html(totalPrice.toFixed(2))
} else {
var totalPrice = parseFloat(price) - parseFloat(add)
$('#price').html(totalPrice.toFixed(2))
}
}
})
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<p>
Price for adds: <span id="price">0 usd</span>
</p>
</div>
<div class='panel'>
<div class='panel-body'>
<form>
<div class="checkbox">
<label>
<input type="checkbox">All adds</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" data-price="3.50">Additional cheese, 3,50 USD</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" data-price="2.20">Salami, 2,20 USD</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" data-price="5.00">Additional Ham, 5 USD</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" data-price="4.10">pepper, 4,10 USD</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" data-price="3.50">Mushroms, 3,50 USD</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox">Clear all</label>
</div>
<br>
<p>
<button class='btn btn-primary'>Submit</button>
</p>
</form>
</div>
</div>
&#13;
答案 2 :(得分:-1)
将主复选框设为ID“cAll”。并使用jQuery:
$("#cAll").click(function(){
$('input:checkbox').not(this).prop('checked', this.checked);
});