【发布时间】:2015-04-01 14:39:57
【问题描述】:
我正在使用iCheck Plugin 在我的网站上设置我的复选框的样式。
我有多个父类别,然后是我的网站用户可以从中选择的子类别(子类别)。我的目标是默认情况下让所有父类别处于禁用状态,然后如果它们的任何子类别被选中,则让它们被选中(但对用户单击保持禁用状态)。为了更清楚起见:如果检查了父类别的任何子类别,则始终需要检查父类别,我不能依赖我的用户来执行此操作,这就是我希望将其自动化的原因。
这是简化的 HTML 布局...
<li class="categories">
//Parent that is disabled and needs to get into a disabled-checked state
<label class="selectit icheck-label">
<div class="icheckbox_polaris icheck-item">
<input type="checkbox" name="field_1" value="79" class="icheck-input title-input">
</div>
Parent 1
</label>
//ul that holds all children categories
<ul class="children">
<li>
<label class="selectit icheck-label">
<div class="icheckbox_polaris icheck-item">
<input type="checkbox" name="fields_2" value="97" class="icheck-input">
</div>
Child 1
</label>
</li>
<li>
<label class="selectit icheck-label">
<div class="icheckbox_polaris icheck-item">
<input type="checkbox" name="fields_2" value="97" class="icheck-input">
</div>
Child 2
</label>
</li>
</ul>
</li>
这是我目前使用 jQuery 代码的地方...
第 1 步
jQuery('.categories').find('input:first').addClass('title-input');
这会找到第一个<input>,它是每个类别列表的父输入,并将.title-input 类添加到其中。
第 2 步
jQuery('.title-input').icheck('disabled');
这会在父输入上找到新添加的.title-input 类并将其置于禁用状态(用户无法单击)。这行得通。
第 3 步(此处需要帮助)
jQuery('.children input').on('ifChecked', function(event) {
console.log("Hello!"); //this log works
jQuery('.title-input').icheck('checked');
});
所以我的问题是,当单击任何类别中的任何子输入时,所有的父输入都会被检查。当子输入未被选中时,父母不会再次被选中(他们应该)。我只是在学习 jQuery,到目前为止,这已经超出了我的范围。如果您访问我上面链接的页面,iCheck 插件有多种帮助可以帮助您完成此操作,但我就是想不通。
另外,如果您想知道我为什么不使用简写 jQuery,那是因为我在 Wordpress 上这样做。
非常感谢您。
【问题讨论】: