我有一个嵌套的未排序列表,我想在父复选框上放置一个click事件,所以在检查它时会检查所有子复选框,反之亦然.出于某种原因,我只能让选择器获得所有类型复选框的输入...我尝试了各种各样的方法,这是其中之一.有什么建议 ?
<ul id="parent">
<li>
<input type='checkbox'>first</input>
<ul>
<li><input type='checkbox'>child1</input>
</li>
<li><input type='checkbox'>child2</input>
</li>
</ul>
</li>
<li>
<input type='checkbox'>second</input>
<ul>
<li><input type='checkbox'>child1</input>
</li>
<li><input type='checkbox'>child2</input>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$('#parent > li input[type=checkbox]').click(function() {
var parent = $(this);
if ($(parent).is(':checked')) {
$('li > input[type=checkbox]', parent).each(function() {
$(this).attr('checked', true);
});
}
else {
$('li > input[type=checkbox]', parent).each(function() {
$(this).attr('checked', false);
});
}
});
Run Code Online (Sandbox Code Playgroud)
这应该工作:
首先你回到LI,然后搜索复选框
$('#parent > li input[type=checkbox]').click(function() {
$(this).closest("li").find("ul li input[type=checkbox]").attr('checked', $(this).is(':checked'))
});
Run Code Online (Sandbox Code Playgroud)
但是,您可以考虑添加一些类名.所以你的代码变得更具可读性.
<li>
<input type='checkbox' class='category'>first</input>
<ul>
<li><input type='checkbox' class='subcategory'>child1</input>
</li>
<li><input type='checkbox' class='subcategory'>child2</input>
</li>
</ul>
</li>
Run Code Online (Sandbox Code Playgroud)
比你的jQuery看起来像这样:
$("#parent .category").click(function(){
$(this).closest("li").find(".subcategory").attr('checked', $(this).is(':checked'))
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |