使用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属性,则必须确保它在文档中具有唯一值