选中列表中的复选框'的孩子
Select the checkboxes in list's children
我现在有一个问题,无法使用我找到的方法解决(http://jsfiddle.net/nick_craver/BgXrz/,http://code.google.com/p/jquery-tree/)。两者都不能完全解决我的解决方案,但它们给了我一个如何做的想法,我想要什么。
好的。这是我的问题:
我有一个列表(包括ul
和li
),在每个中
<li>
there is a checkbox and some text. E.g.:
<ul>
<li>
<p>
<input type="checkbox" name="this_name" checked/>Description
Bla: <input type="text" size="8" name="this_arg" value=""/>
</p>
</li>
</ul>
其中(在结束的li
后面)有一个完整的其他参数树,这些参数有其他名称等等,所以它创建了一个类似的树
<ul>
<li>A
<ul>
<li>AA</li>
<li>AB
<ul>
<li>ABA</li>
</ul>
</li>
</ul>
</li>
</ul>
结构本身现在应该是清楚的。
现在我想使用jQuery或Javascript来检查某个父级的子级中的所有元素。例如,如果我标记"A",我希望检查所有节点。如果我点击"AB",我想检查"ABA",等等…
我不太明白我该怎么做,我很感激任何帮助。
这就是您想要的吗?
http://jsfiddle.net/johncmolyneux/pqLts/2/
<ul>
<li>Main
<ul>
<li><input type="checkbox" /> parent 1
<ul>
<li><input type="checkbox" />sub 1</li>
<li><input type="checkbox" />sub 2
<ul>
<li><input type="checkbox" />sub sub 2</li>
<li><input type="checkbox" />sub sub 3</li>
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" />parent 2</li>
</ul>
</li>
</ul>
$(function() {
$(":checkbox").click(function() {
var checked = $(this).attr("checked");
$(this).parent().find(":checkbox").attr("checked", checked);
});
});
您的问题是,在您的示例中,附加列表实际上不是"对应"复选框的子列表。他们实际上是兄弟姐妹。如果你想让它成为真正的孩子,那么用jQuery:选择它就足够容易了
$(':checkbox').click(function() {
$(':checkbox', $(this).parent()).attr('checked', 'checked');
});
像这样的东西。
假设您确实有一组具有以下结构的列表:
<ul>
<li>
<p><input type="checkbox" /> A</p>
</li>
<ul>
<li>
<p><input type="checkbox" /> AA</p>
</li>
<li>
<p><input type="checkbox" /> AB</p>
</li>
<ul>
<li>
<p><input type="checkbox" /> ABA</p>
</li>
</ul>
</ul>
</ul>
你可以这样做:
$('li').click(function(){
$(this)
.find('p>input:checkbox').attr('checked', 'checked')
.end()
.next('ul').find('li>p>input:checkbox').attr('checked', 'checked');
});
这与@mgibsonbr的回答基本相同。
注意:我在这里假设,如果单击"A",您希望将复选框包括在内。如果没有复选框,请在HTML中省略它;如果不希望选中它,请删除click处理程序的第二行和第三行。
如果你的HTML实际上是这样的:
<ul>
<li><p><input type="checkbox" /> A</p>
<ul>
<li><p><input type="checkbox" />AA</p></li>
<li><p><input type="checkbox" />AB</p>
<ul>
<li><p><input type="checkbox" />ABA</p></li>
</ul>
</li>
</ul>
</li>
</ul>
然后你可以这样做:
$('li').click(function(e){
e.stopPropagation();
$(this).find('p>input:checkbox').attr('checked', 'checked');
});
在这里,有必要防止子li
上的事件冒泡并导致所有复选框都被选中。
以下是两种可能性的示例。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 使用$.ajax发布多个复选框
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 使用jquery选中/取消选中单个复选框
- Angular JS Filter-通过3个复选框进行筛选
- 如果选中了多个复选框,如何添加事件
- Javascript复选框函数:;缺少:在属性id之后"
- JavaScript-切换“;全部检查”;复选框true/false
- 如何从javascript/jquery中的复选框中获取布尔值
- 在Ajax中捕获复选框值
- 选中列表中的复选框'的孩子
- jQuery帮助取消勾选父,我需要切换孩子复选框
- 当父复选框被选中时,我试图选中所有子复选框.但这只适用一次!当我下次尝试时,孩子没有被检查