生成的具有相同类父子项的复选框树

时间:2016-06-01 14:52:18

标签: javascript jquery checkbox

我有一个用php sql生成的复选框树,结构如下:

<input class="level_" name="1" type="checkbox" /> Parent element
<input class="level_z" name="153" type="checkbox" /> Child element
<input class="level_z" name="481" type="checkbox" /> Child element
<br/>
<input class="level_" name="5" type="checkbox" /> Parent element
<input class="level_zz" id="845" type="checkbox" /> Child element
<input class="level_zz" id="5613" type="checkbox" /> Child element

<input class="level_" name="2" type="checkbox" /> Parent element
<input class="level_z" name="154" type="checkbox" /> Child element
<input class="level_z" name="482" type="checkbox" /> Child element
<br/>
<input class="level_" name="8" type="checkbox" /> Parent element
<input class="level_zz" id="659" type="checkbox" /> Child element
<input class="level_zz" id="3643" type="checkbox" /> Child element

我希望在选择父级时选择子元素,但由于所有父级和子级具有相同的ID,因此我不能将它们视为单个组。我有一个jquery设法选择父母之后的所有level_zz子项,直到下一个父级,但这还不够:

$('.level_').change(function() { $(".level_").nextUntil(".level_zz").attr('checked', $(this).attr('checked')); });

我不知道如何在没有唯一父标识的情况下执行此操作,也无法更改复选框的生成方式。

我希望代码是:
"if certain parent (no unique class but unique name) is selected select all it's children too."

1 个答案:

答案 0 :(得分:1)

你可以,

$('.level_').change(function() {
  $(this).nextUntil(".level_").prop('checked', this.checked);
});

Fiddle

  • 不使用硬编码的父名称,只需使用this(当前对象)。
  • 然后使用nextUntil(next parent selector)选择当前元素之后和下一个父元素之前的所有子元素。