我正试图弄清楚我的jQuery中哪些不起作用..
HTML
<ul>
<div class="filter-all">
<div class="filter-select-all">Select All</div> |
<div class="filter-select-none">Select None</div>
</div>
<li><label><input type="checkbox">Food</label></li>
<li><label><input type="checkbox">Meeting</label></li>
<li><label><input type="checkbox">Music</label></li>
<li><label><input type="checkbox">Outdoors</label></li>
</ul>
的jQuery
$('.filter-select-all').click(function() {
$(this).closest('ul').find(':checkbox').attr('checked', this.checked);
});
我尝试了各种不同的方法,而不是最近的方法,也找到了。
感谢您的帮助:)
答案 0 :(得分:3)
$(function() {
$('.filter-select-all').click(function() {
$(this).closest('ul').find('input[type="checkbox"]').prop('checked', true);
});
});
仅供参考 - HTML规范说只有<li>
应该是<ul>
的直接后代,因此您应该将HTML更改为:
<div class="filter-all">
...
</div>
<ul id='checkboxes'> ... </ul>
然后您的代码将如下所示:
$(function () {
$('.filter-select-all').click(function () {
$('#checkboxes').find('input[type="checkbox"]')
.prop('checked', true);
});
$('.filter-select-none').click(function () {
$('#checkboxes').find('input[type="checkbox"]')
.prop('checked', false);
});
});
要将两个点击处理程序压缩为一个,请考虑进一步更新HTML(将filter-select-all
拆分为filter-select
和all
):
<div class="filter-all">
<div class="filter-select all">Select All</div>|
<div class="filter-select none">Select None</div>
</div>
然后你可以使用第二个类进行布尔翻转:
$(function () {
$('.filter-select').click(function () {
$('#checkboxes').find('input[type="checkbox"]')
.prop('checked', $(this).is('.all'));
});
});
答案 1 :(得分:1)
div
元素没有checked
属性,即this.checked === 'undefined'
div
元素不应该是ul
元素的直接子元素。要更改元素prop
的属性,应使用attr
代替。
$('.filter-select-all').click(function() {
$(this).closest('ul').find('input[type=checkbox]').prop('checked', true);
});
答案 2 :(得分:0)
在每个复选框上添加“class”属性:
&LT;立GT;&LT;标签&gt;&LT;输入 class ='check' type =“checkbox”&gt;食物&lt; /标签&gt;&LT; /立GT;
按如下方式编写javascript:
$('。filter-select-all')。click(function(){ $('。check')。each(function(k,v){ v.checked = true; }); });
$('。filter-select-none')。click(function(){ $('。check')。each(function(k,v){ v.checked = false; }); });
答案 3 :(得分:0)
$('.filter-select-all').click(function() {
$(this).parent().siblings('li').children().find('input[type="checkbox"]').prop("checked",true);
});
$('.filter-select-none').click(function() {
$(this).parent().siblings('li').children().find('input[type="checkbox"]').prop("checked",false);
});
答案 4 :(得分:0)
$('.filter-select-all').click(function() {
$(this).closest('ul').find('input:checkbox').prop('checked', true);
});