Reputation: 1179
I have a nested list with checkboxes. With the first checkbox i want to toggle all the checkboxes in that list. I know how to toggle them with jQUery but i don't know how to select them. Thats the problem, the selecting part.
<ul>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
</ul>
Upvotes: 2
Views: 296
Reputation: 883
Try to do this:
$('.list').find('input:eq(0)').on('click', function(){
var $checkbox = $(this).is(':checked');
$(this).closest('ul').find('input').attr('checked', $checkbox);
});
Upvotes: 0
Reputation: 205
You can collect all the checkbox inside an element with class "list" as follows:
$('.list input:checkbox')
So, something like this should work:
<ul>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox" onclick="$('.list input:checkbox').attr('checked', true);"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
</ul>
(you must add the "toggle" logic)
Check jq for more information con jquery checkbox selector.
Upvotes: 0
Reputation: 1920
You could go with something like this:
HTML:
<ul>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
<li>
<p> lorem ipsum </p>
<ul class="list">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</li>
</ul>
Javascript
$(".list li:first-child input[type=checkbox]").click(function() {
if (!this.checked) {
$(this).parents(".list").find("input[type=checkbox]").removeAttr( "disabled");
} else {
$(this).parents(".list").find("input[type=checkbox]").attr( "disabled", true);
$(this).parents(".list").find("li:first-child input[type=checkbox]" ).removeAttr("disabled");
}
});
you can see a live working demo here, or look at the jsFiddle. As so often is the case, there are plenty of possible solutions, but this could work.
Upvotes: 0
Reputation: 624
Try this:
$(".list").find("input[type=checkbox]:first").on("click", function(){
var cb = $(this);
cb.parents(".list").find("input[type=checkbox]").attr("checked", cb.is(":checked"));
});
Edit: Sorry, working for the second list now.
Upvotes: 0
Reputation: 26765
Assuming I have read your request correctly;
jQuery .siblings()
Exampe: http://jsfiddle.net/52DBv/
Upvotes: 3