I'm adjusting an existing page where there are nested checkboxes, like this:
<ul>
<li>
<label><input type="checkbox" class="categorycheckbox">Group 1</label>
<ul>
<li>
<label><input type="checkbox" class="productcheckbox">Item 1</label>
</li>
<li>
<label><input type="checkbox" class="productcheckbox">Item 2</label>
</li>
</ul>
</li>
<li>
<label><input type="checkbox" class="categorycheckbox">Group 2</label>
<ul>
<li>
<label><input type="checkbox" class="productcheckbox">Item 1</label>
</li>
<li>
<label><input type="checkbox" class="productcheckbox">Item 2</label>
</li>
</ul>
</li>
</ul>
And so on. I'm using jQuery to give the users the ability to select/deselect all child inputboxes, like this:
var updateCheckedState = function () {
var list = $(this).closest("li").find("ul");
$(".productcheckbox", list).attr("checked", this.checked);
};
$(".categorycheckbox").change(updateCheckedState);
This works for checking once and unchecking once for each group. Then it stops working, and I don't understand why. I've created a fiddle: http://jsfiddle.net/AQ76y/