When I bind a function to a checkbox element like:
$("#myCheckbox").click( function() { alert($(this).is(":checked")); });
The checkbox changes its checked attribute before the event is triggered, this is the normal behavior, and gives an inverse result.
However, when I do:
$("#myCheckbox").click();
The checkbox changes it checked attribute after the event is triggered.
My question is, is there a way to trigger the click event from jQuery like a normal click would do (first scenario)?
PS: I've already tried with trigger('click')
;
Checking if a checkbox is checked First, select the checkbox using a DOM method such as getElementById() or querySelector() . Then, access the checked property of the checkbox element. If its checked property is true , then the checkbox is checked; otherwise, it is not.
$('#myCheckbox').change(function () { if ($(this).prop("checked")) { // checked return; } // not checked });
Note: In older versions of jquery it was OK to use attr
. Now it's suggested to use prop
to read the state.
There is a work-around that works in jQuery 1.3.2 and 1.4.2:
$("#myCheckbox").change( function() { alert($(this).is(":checked")); }); //Trigger by: $("#myCheckbox").trigger('click').trigger('change');
But I agree, this behavior seems buggy compared to the native event.
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