【问题标题】:Show group of checkboxes if a checkbox in the group is checked如果选中组中的复选框,则显示复选框组
【发布时间】:2015-06-30 15:18:14
【问题描述】:

请查看fiddle here

如果组中的任何复选框被预先选中,我想做的是在页面加载时显示组中的复选框。

这里是 HTML:

<ul>
<li class="header">
    <h3>Group 1</h3>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" checked="checked" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="header">
    <h3>Group 2</h3>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="header">
    <h3>Group 3</h3>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
<li class="option">
    <label><input type="checkbox" /> Value</label>
</li>
</ul>

对我来说主要的障碍是我无法包装组(例如在&lt;div&gt;&lt;li&gt; 中),因为标题是动态插入的。显示/隐藏包装会很棒,但这不是一个选项。如果我无法包装它,我无法弄清楚如何定位组中的复选框。非常感谢您的想法。

【问题讨论】:

  • 请务必在您的问题中发布您的代码。

标签: jquery checkbox toggle show-hide


【解决方案1】:

使用过滤功能获取已检查的元素并触发点击其支持的头部元素:

$('li.header').click(function() {
    $(this).nextUntil('li:not(.option)').slideToggle();
    return false;
}).filter(function(){
   return $(this).nextUntil('li:not(.option)').find(':checked').length > 0;
}).click();

Working Demo

【讨论】:

  • 太美了!我现在正在查看 .filter() 的 jQuery API 文档以了解它。太感谢了。将尽快接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2016-06-29
  • 2015-07-17
  • 2017-02-04
  • 1970-01-01
相关资源
最近更新 更多