我嵌套了无序列表,列表项与它的标题看起来像这样。复选框不确定状态逻辑
<ul>
<li><input type="checkbox" /> Header 1</li>
<ul>
<li><input type="checkbox" value="1" />Item 1</li>
</ul>
<li><input type="checkbox" /> Header 2</li>
<ul>
<li><input type="checkbox" value="1" />Item 1</li>
<li><input type="checkbox" value="2" />Item 2</li>
<li><input type="checkbox" value="3" />Item 3</li>
<li><input type="checkbox" value="4" />Item 4</li>
</ul>
<li><input type="checkbox" /> Header 3</li>
<ul>
<li><input type="checkbox" value="5" />Item 5</li>
<li><input type="checkbox" value="6" />Item 6</li>
<li><input type="checkbox" value="7" />Item 7</li>
<li><input type="checkbox" value="8" />Item 8</li>
<li><input type="checkbox" value="9" />Item 9</li>
<li><input type="checkbox" value="10" />Item 10</li>
<li><input type="checkbox" value="11" />Item 11</li>
<li><input type="checkbox" value="12" />Item 12</li>
<li><input type="checkbox" value="13" />Item 13</li>
<li><input type="checkbox" value="14" />Item 14</li>
<li><input type="checkbox" value="15" />Item 15</li>
<li><input type="checkbox" value="16" />Item 16</li>
</ul>
</ul>
请注意,项目1存在于标题1的列表和标题2的列表中。
我试图完成一些事情。
- 当我点击的标题项,它会自动选择或取消选择所有列表项
li
内它的ul
列表紧随其后。 - 当我点击一个嵌套的
ul
内的列表项li
我想检查是否所有其他项目都检查(在这种情况下,在标题列表项上放置一个复选标记),或未选中(在这种情况下,删除标题列表项目中的复选标记),如果它是已选中和未选中的混合,则将标题列表项目设置为不确定状态。 - 当我检查一个列表项目,比如列表项目1出现在标题1的列表和标题2的列表中时,我希望它取消选中两个项目,或者检查两个列表中的两个项目,并导致签入要求二在受影响的名单上进行。
我真的很难做到这一点,因为我并不是那么擅长JavaScript,而且我迄今读过的所有代码并不真正接近我所需要的。
任何帮助,将不胜感激。我使用的是jQuery 1.9.1,但是如果你想用它来做这件事,那么JavaScript也不错(因为在谷歌开发工具中设置一个制动点来查看发生了什么时,它更容易遵循)。
完整的例子可以我们添加CSS类到标题里,帮助更容易地选择DOM! – rab 2013-03-05 12:11:15