jquerycheckboxclickischecked

jQuery, checkboxes and .is(":checked")


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');


Solution

  • $('#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.