打开/closurescheckbox
我有以下几点:
$(document).ready(function() { $("#select-all-teammembers").click(function() { $("input[name=recipients\\[\\]]").attr('checked', true); }); });
点击时,我想要id="select-all-teammembers"
在已选中和未选中之间进行切换。 想法? 那不是几十行代码?
你可以写:
$(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()
在应用于“boolean”HTML属性时比attr()
prop()
有更好的语义,所以在这种情况下通常是首选。
//this toggles the checkbox, and fires its event if it has $('input[type=checkbox]').trigger('click'); //or $('input[type=checkbox]').click();
我知道这是旧的,但问题是有点模糊, 切换可能意味着每个checkbox应该切换其状态,无论是。 如果你有3个选中,2个未选中,那么切换会使前3个未选中,最后2个选中。
为此,这里没有解决scheme,因为他们使所有checkbox具有相同的状态,而不是切换每个checkbox的状态。 对许多checkbox执行$(':checkbox').prop('checked')
返回所有.checked
二进制属性之间的逻辑AND,即如果其中一个属性未选中,则返回值为false
。
你需要使用.each()
如果你想实际切换每个checkbox的状态,而不是使他们都平等,例如
$(':checkbox').each(function () { this.checked = !this.checked; });
请注意,在处理程序中不需要$(this)
,因为.checked
属性在所有浏览器中都存在。
这是另一种你想要的方式。
$(document).ready(function(){ $('#checkp').toggle( function () { $('.check').attr('Checked','Checked'); }, function () { $('.check').removeAttr('Checked'); } ); });
我认为触发点击更简单:
$("#select-all-teammembers").click(function() { $("input[name=recipients\\[\\]]").trigger('click'); });
使用这个插件:
$.fn.toggleCheck =function() { if(this.tagName === 'INPUT') { $(this).prop('checked', !($(this).is(':checked'))); } }
然后
$('#myCheckBox').toggleCheck();
由于jQuery 1.6你可以使用.prop(function)
切换每个find的元素的选中状态:
$("input[name=recipients\\[\\]]").prop('checked', function(_, checked) { return !checked; });
假设这是一个图像,必须切换checkbox,这对我的作品
<img src="something.gif" onclick="$('#checkboxid').prop('checked', !($('#checkboxid').is(':checked')));"> <input type="checkbox" id="checkboxid">
全选checkbox应在特定条件下自行更新。 尝试点击“#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')); });
顺便说一句,所有的checkboxDOM对象应该如上所述进行caching。
我能想到的最好的方式。
$('#selectAll').change(function () { var checked = (this.checked) ? true : false; $('.reportCheckbox').prop('checked', checked); });
要么
$checkBoxes = $(".checkBoxes"); $("#checkAll").change(function (e) { $checkBoxes.prop("checked", this.checked); });
最基本的例子是:
// 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>
只要你可以使用这个
$("#chkAll").on("click",function(){ $("input[name=checkBoxName]").prop("checked",$(this).prop("checked")); });
如果你想单独切换每个盒子(或者只是一个盒子也可以):
我build议使用.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()来(un)检查的东西。
据我所知,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; }); });
;)
在我的猜测中,谁build议正常的变种是GigolNet Gigolashvili,但我想build议更美丽的变种。 核实
$(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 }) })
设置'选中'或空分别代替真或假将做这项工作。
// checkbox selection var $chk=$(':checkbox'); $chk.prop('checked',$chk.is(':checked') ? null:'checked');
你也可以这样写
$(function() { $("#checkbox-toggle").click(function() { $('input[type=checkbox][name=checkbox_id\\[\\]]').click(); }); });
当用户点击ID为“#checkbox-toggle”的button时,只需要调用checkbox的点击事件即可。
更好的方法和UX
$('.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; }); });
这个对我来说很好。
$("#checkall").click(function() { var fruits = $("input[name=fruits\\[\\]]"); fruits.prop("checked", $(this).prop("checked")); });
此代码将在点击网页模板中使用的任何切换开关animation工具时切换checkbox。 replace代码中的“.onoffswitch-label”。 “checkboxID”是在此处切换的checkbox。
$('.onoffswitch-label').click(function () { if ($('#checkboxID').prop('checked')) { $('#checkboxID').prop('checked', false); } else { $('#checkboxID').prop('checked', true); } });
这里是一个jQuery的方式来切换checkbox,而不必selectcheckbox与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'); } });
那么有一个更简单的方法
首先给你的checkbox一个类的例子'id_chk'
然后里面的checkbox,这将控制'id_chk'checkbox状态把:
<input type='checkbox' onchange='js:jQuery(".id_chk").prop("checked", jQuery(this).prop("checked"))' />
这就是所有,希望这有助于