使用JQuery检查父列表项中的复选框?
我是Javascript和JQuery的新手,所以我一直在阅读它,并且当我检查其中一个子项时,我正在尝试检查(并设置非活动状态)父列表项中的复选框。
如果这没有任何意义,请查看列表结构。
- Parent 1
- Parent 2
- Child 1
- Child 2
- Parent 3
- Parent 4
如果选中Child 1或Child 2,我希望检查Parent 2中的输入并设置为inactive。 我已经开始研究它,但卡在这里:
$(function(){ $('.child').click(function() { $(this).parent().parent().parent().toggle(); }); });
如你所见,我没有做到这一点。 任何帮助,将不胜感激。
谢谢!
试试这个:
根据您发布的标记,这将有效:
$('ul > li ul li > :checkbox').change(function() { $(this).parents('li:last') .children("input") .attr("disabled", this.checked); });
另请注意:
- 您有数字和重复ID,这些ID 无效 。
- 您的文档中没有任何名为“child”的类。
-
.toggle
“显示或隐藏匹配的元素”。 它不会切换他们的“残疾人”财产。
在这里试试: http : //jsfiddle.net/karim79/QfTfr/
.parent()方法仅返回当前选择器的直接父DOM元素。 .parents()方法将搜索DOM树以查找与选择匹配的任何父元素。 所以$(“。bar”)。parents(“。foo”)将选择具有类“bar”的任何元素的类“foo”的所有父元素。
首先为目标父元素提供可识别的属性,类或id。 如果您正在处理ID,则不需要parent(),因此请使用类。
$(".child").click(function(){ $(this).parents('.parentclass').toggle(); });
检查这个fillde
$("input:checkbox + ul input:checkbox").click(function(){ var $ul = $(this).closest("ul"); var $parent = $ul.prev("input:checkbox"); if($ul.find("input:checkbox:checked").length > 0){ $parent.attr("checked", "checked"); }else{ $parent.attr("checked", ""); } })
如果要对元素使用id
属性,则必须确保它在文档中具有唯一值 。