I am using jquery 1.11.1 and this is my code:
$("#rowchkall").change(function(){
if($(this).is(':checked')){
$("input:checkbox[class=rowchk]").each(function() {
alert("set checked");
$(this).attr('checked', "checked");
});
}else{
$("input:checkbox[class=rowchk]").each(function() {
$(this).attr('checked', false);
});
}
});
When I first click on #rowchkall
, all the checkbox is set to checked. When I click it again, all checkbox is unchecked.
When I click it again, alert box still appear but none of the checkbox will be checked. Why is it only work for first time only? How can I fix it?
Thank you.
To check whether a Checkbox has been checked, in jQuery, you can simply select the element, get its underlying object, instead of the jQuery object ( [0] ) and use the built-in checked property: let isChecked = $('#takenBefore')[0]. checked console. log(isChecked);
In order to select all the checkboxes of a page, we need to create a selectAll () function through which we can select all the checkboxes together. In this section, not only we will learn to select all checkboxes, but we will also create another function that will deselect all the checked checkboxes.
click(function(){ $(':checkbox'). prop("checked", true); alert("1"); }); $('#deselectChb'). click(function(){ $(':checkbox'). prop("checked", false); alert("2"); });
Use .prop()
instead of .attr()
$(this).prop('checked', true); //true to check else false uncheck
Your code can be simplified as
$("#rowchkall").change(function () {
$("input:checkbox.rowchk").prop('checked',this.checked);
});
A Good Read .prop() vs .attr()
Try to use .prop()
instead of .attr()
$("#rowchkall").change(function(){
$("input:checkbox[class=rowchk]").prop('checked', this.checked);
});
And you don't need to iterate
over all the elements to change its property.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With