【发布时间】:2014-08-06 09:11:28
【问题描述】:
我的 html 代码中有一个列表,其中 onclick 父复选框,应选中直接子复选框。
<ul class="test_ex">
<li>
<input type="checkbox" id="chckBox" class="parent" onchange="fnTest(this);" /> <a class="ref">Fruits</a>
<ul class="example">
<li>
<input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Apple </a>
</li>
<li>
<input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Orange </a>
</li>
</ul>
<ul class="test_ex_sample">
<li>
<input type="checkbox" id="chckBox" class="parent" onchange="fnTest(this);" /> <a class="ref">Birds</a>
<ul class="example">
<li>
<input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Peacock </a>
</li>
<li>
<input type="checkbox" id="chckBox" class="child" /> <a class="ref">Parrot </a>
</li>
</ul>
<ul class="example">
<li>
<input type="checkbox" id="chckBox" class="parent" onchange="fnTest(this);" /> <a class="ref"> Food </a>
<ul class="example">
<li>
<input type="checkbox" id="chckBox" class="child" /> <a class="ref">Bread </a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
我尝试了很多方法来只检查直系孩子。但他们都没有工作。 这些是几种方法:
-
尝试使用 .siblings() [仅在 stackoverflow 上找到此解决方案]
function fnTest(check) { if ($(check).is(':checked')) { $(check).siblings('.example').find('.child').attr("checked", true); } else { $(check).siblings('.example').find('.child').attr("checked", false); } }
第一个列表在这里正常工作。再次单击第二个列表时,它也会检查第三个列表子项。
- 第二次尝试了这组代码 尝试使用已检查的课程并从该课程中获取孩子。这会检查属于该班级的所有父母。
function fnTest(check) {
if ($(check).is(':checked')) {
var classParent = "." + $(check).attr('class');
$(classParent).attr("checked", true);
}
}
如果有人能指出我的错误,那就太好了。
【问题讨论】:
-
你应该有元素的唯一ID。
标签: javascript jquery html checkbox