Answers:
你可以写:
$(document).ready(function() {
$("#select-all-teammembers").click(function() {
var checkBoxes = $("input[name=recipients\\[\\]]");
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
});
});
在jQuery 1.6之前,当我们只有attr()而不是prop()时,我们曾经这样写:
checkBoxes.attr("checked", !checkBoxes.attr("checked"));
但是,prop()
与attr()
应用于“布尔” HTML属性相比,它具有更好的语义,因此在这种情况下通常是首选的。
$('input[type=checkbox]').trigger('click');
@ 2astalavista在下面提到的内容更为简洁,也触发了“更改”事件。
//this toggles the checkbox, and fires its event if it has
$('input[type=checkbox]').trigger('click');
//or
$('input[type=checkbox]').click();
我知道这很老了,但是在切换过程中问题有点模棱两可可能意味着每个复选框都应该切换其状态,无论是什么状态。如果您有3个选中项和2个未选中项,则切换将使前3个处于未选中状态,而最后2个处于选中状态。
为此,这里的所有解决方案都不起作用,因为它们使所有复选框具有相同的状态,而不是切换每个复选框的状态。$(':checkbox').prop('checked')
对许多复选框执行操作会在所有.checked
二进制属性之间返回逻辑与,即,如果未选中其中之一,则返回的值为false
。
.each()
如果要实际切换每个复选框状态而不是使它们都相等,则需要使用,例如
$(':checkbox').each(function () { this.checked = !this.checked; });
请注意,您不需要$(this)
在处理程序内部,因为该.checked
属性存在于所有浏览器中。
我能想到的最好方法。
$('#selectAll').change(function () {
$('.reportCheckbox').prop('checked', this.checked);
});
要么
$checkBoxes = $(".checkBoxes");
$("#checkAll").change(function (e) {
$checkBoxes.prop("checked", this.checked);
});
要么
<input onchange="toggleAll(this)">
function toggleAll(sender) {
$(".checkBoxes").prop("checked", sender.checked);
}
从jQuery 1.6开始,您可以.prop(function)
用来切换每个找到的元素的选中状态:
$("input[name=recipients\\[\\]]").prop('checked', function(_, checked) {
return !checked;
});
使用这个插件:
$.fn.toggleCheck =function() {
if(this.tagName === 'INPUT') {
$(this).prop('checked', !($(this).is(':checked')));
}
}
然后
$('#myCheckBox').toggleCheck();
假设它是必须切换复选框的图像,这对我有用
<img src="something.gif" onclick="$('#checkboxid').prop('checked', !($('#checkboxid').is(':checked')));">
<input type="checkbox" id="checkboxid">
退房所有复选框应该更新自身在一定条件下。尝试单击“#select-all-teammembers”,然后取消选中一些项目,然后再次单击全选。您会看到不一致的地方。为了防止这种情况,请使用以下技巧:
var checkBoxes = $('input[name=recipients\\[\\]]');
$('#select-all-teammembers').click(function() {
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
$(this).prop("checked", checkBoxes.is(':checked'));
});
顺便说一句,所有复选框DOM对象都应如上所述进行缓存。
这是jQuery的一种切换复选框的方法,而不必选择带有html5和标签的复选框:
<div class="checkbox-list margin-auto">
<label class="">Compare to Last Year</label><br>
<label class="normal" for="01">
<input id="01" type="checkbox" name="VIEW" value="01"> Retail units
</label>
<label class="normal" for="02">
<input id="02" type="checkbox" name="VIEW" value="02"> Retail Dollars
</label>
<label class="normal" for="03">
<input id="03" type="checkbox" name="VIEW" value="03"> GP Dollars
</label>
<label class="normal" for="04">
<input id="04" type="checkbox" name="VIEW" value="04"> GP Percent
</label>
</div>
$("input[name='VIEW']:checkbox").change(function() {
if($(this).is(':checked')) {
$("input[name='VIEW']:checkbox").prop("checked", false);
$("input[name='VIEW']:checkbox").parent('.normal').removeClass("checked");
$(this).prop("checked", true);
$(this).parent('.normal').addClass('checked');
}
else{
$("input[name='VIEW']").prop("checked", false);
$("input[name='VIEW']").parent('.normal').removeClass('checked');
}
});
如果要单独切换每个框(或仅一个框也可以):
我建议使用.each(),因为如果您希望发生不同的事情,那么它很容易修改,并且仍然相对较短且易于阅读。
例如:
// toggle all checkboxes, not all at once but toggle each one for its own checked state:
$('input[type="checkbox"]').each(function(){ this.checked = ! this.checked });
// check al even boxes, uncheck all odd boxes:
$('input[type="checkbox"]').each(function(i,cb){ cb.checked = (i%2 == 0); });
// set all to checked = x and only trigger change if it actually changed:
x = true;
$('input[type="checkbox"]').each(function(){
if(this.checked != x){ this.checked = x; $(this).change();}
});
在侧面说明...不确定为什么每个人都使用.attr()或.prop()来(取消)检查内容。
据我所知,element.checked在所有浏览器中一直都一样工作吗?
jQuery("#checker").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = true;
});
});
jQuery("#dechecker").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = false;
});
});
jQuery("#checktoggler").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = !this.checked;
});
});
;)
更好的方法和用户体验
$('.checkall').on('click', function() {
var $checks = $('checks');
var $ckall = $(this);
$.each($checks, function(){
$(this).prop("checked", $ckall.prop('checked'));
});
});
$('checks').on('click', function(e){
$('.checkall').prop('checked', false);
});
<table class="table table-datatable table-bordered table-condensed table-striped table-hover table-responsive">
<thead>
<tr>
<th class="col-xs-1"><a class="select_all btn btn-xs btn-info"> Select All </a></th>
<th class="col-xs-2">#ID</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="order333"/></td>
<td>{{ order.id }}</td>
</tr>
<tr>
<td><input type="checkbox" name="order334"/></td>
<td>{{ order.id }}</td>
</tr>
</tbody>
</table>
尝试:
$(".table-datatable .select_all").on('click', function () {
$("input[name^='order']").prop('checked', function (i, val) {
return !val;
});
});
最基本的示例是:
// get DOM elements
var checkbox = document.querySelector('input'),
button = document.querySelector('button');
// bind "cilck" event on the button
button.addEventListener('click', toggleCheckbox);
// when clicking the button, toggle the checkbox
function toggleCheckbox(){
checkbox.checked = !checkbox.checked;
};
<input type="checkbox">
<button>Toggle checkbox</button>
在我的猜测中,建议正常变体的最正确的人是GigolNet Gigolashvili,但我想提出更美丽的变体。核实
$(document).on('click', '.fieldWrapper > label', function(event) {
event.preventDefault()
var n = $( event.target ).parent().find('input:checked').length
var m = $( event.target ).parent().find('input').length
x = n==m? false:true
$( event.target ).parent().find('input').each(function (ind, el) {
// $(el).attr('checked', 'checked');
this.checked = x
})
})
单击Web模板中使用的任何切换开关动画器时,此代码将切换复选框。替换代码中可用的“ .onoffswitch-label”。“ checkboxID”是此处切换的复选框。
$('.onoffswitch-label').click(function () {
if ($('#checkboxID').prop('checked'))
{
$('#checkboxID').prop('checked', false);
}
else
{
$('#checkboxID').prop('checked', true);
}
});