Hi jQuery community,

I hit an interesting situation with jQuery today where the toggle()
method exhibited some strange behavior.

Show / hide methods inside the toggle() worked fine, but the setting
and removing the "clicked" attribute on the checkbox to which the
toggle was bound did not.  I tested this by re-writing the behavior as
a .click() with some conditional logic, with the if / then branches
executing the same statements as those inside the two toggle()
functions.

Result: .click() with if / then worked, while .toggle() failed

I was wondering if I'm missing something obvious...

Here are the two separate jQuery snippets that I tried, one
with .toggle(), one with .click(), they are followed by the relevant
chunck of XHTML.

It looks a little bit like some sort of bug to me, but I'm just not
familiar enough with jQuery to know.

Thanks very much!

/* $(this) checkbox does not toggle when clicked */
$(document).ready(function () {
        $("form > fieldset > ul > li:last").hide();
        $("#id_close_bidding").toggle(
                function () {
                        $(this).attr("checked", true);
                        $("form > fieldset > ul > li:last").show();
                },
                function () {
                        $(this).attr("checked", false);
                        $("#id_notify_others").attr("checked", false);
                        $("form > fieldset > ul > li:last").hide();
                }
        );
});

/* $(this) checkbox toggles when clicked */
$(document).ready(function () {
        $("form > fieldset > ul > li:last").hide();
        $("#id_close_bidding").click(
                function () {
                        if ($("form > fieldset > ul > li:hidden").length > 0) {
                                $(this).attr("checked", true);
                                $("form > fieldset > ul > li:last").show();
                        }
                        else {
                                $(this).attr("checked", false);
                                $("#id_notify_others").attr("checked", false);
                                $("form > fieldset > ul > li:last").hide();
                        }
                }
        );
});

--XHTML Snippet--
<form method="post" action=".">
        <fieldset>
                <ul>
                        <li><input type="checkbox" id="id_close_bidding" /></li>
                        <li><input type="checkbox"
id="id_notify_others" /></li>
                </ul>
                <input value="Accept Bid" type="submit" />
        </fieldset>
</form>

Reply via email to