我有这样的代码:
<ul>
<li><input type="checkbox" level="child" name="somename1" value="1" /> Child 1</li>
<li><input type="checkbox" level="child" name="somename2" value="2" /> Child 2 <br />
<ul>
<li><input type="checkbox" level="subchild" name="somename1" value="3" />Sub Child 1</li>
<li><input type="checkbox" level="subchild" name="somename2" value="3" />Sub Child 2</li>
</ul>
</li>
<li ><input type="checkbox" level="child" name="somename3" value="3" /> Child 3</li>
</ul>
和jquery代码:
$('input[@type=checkbox][level="child"]').click(function (event) {
var checked = $(this).is(':checked');
if (checked) {
alert("checked");
} else { //for click child to uncheck subchild
alert("when unchecked");
$(this).closest('ul > li').children('input[@type=checkbox][level="subchild"]').attr('checked', false);
}
});
情况:检查子项2 +子项1 +子项2
问题:我想在取消选中子项2时取消选中subchild1 + subchild2,上面的代码不起作用。我认为这与某些事情有关:
$(this).closest('ul > li').children('input[@type=checkbox [level="subchild"]').attr('checked', false);
任何帮助都会很棒。这是JSfiddle:http://jsfiddle.net/p324w/
答案 0 :(得分:2)
$('input[type=checkbox][level="child"]').click(function (event) {
var checked = $(this).is(':checked');
if (checked) {
console.log("checked");
} else { //for click child to uncheck subchild
$(this).parent().find('input[type=checkbox][level="subchild"]').prop('checked', false);
}
});
<强> jsFiddle example 强>
一些注意事项:
@
的原因,但这是不必要的$(this).parent().find
导航到DOM中正确的输入元素.prop('checked', false)
代替.attr('checked', false)
。level
不是有效的属性。如果您需要自定义属性,请使用data-*
。答案 1 :(得分:1)
试试这个:
$('input[type=checkbox][level="child"]').on('click', function () {
// get checked status
var checked = $(this).is(':checked');
// go up the dom to the parent of checkbox (li)
$(this).closest('li')
// find all subchild checkboxes
.find('input[type=checkbox][level="subchild"]')
// make them as the parent checkbox (checked or not)
.prop('checked', checked);
});