所以我是JS和Jquery库的相对新手。我一直在玩弄东西,可以看到它非常不整洁,这是我希望你们可以帮助建议一个更好的方式来做我想要达到的目标。隐藏和显示复选框选项 - 收拾Jquery
目的:
有多个复选框,其中一些如果选择显示的子集的复选框。如果父母没有被选中,那么孩子的复选框也应该被取消选中。
HTML(这是简化的)
<div class="option1">
<input type="checkbox" id="optionA" />
<div id="suboption1">
<input type="checkbox" id="optionA1" />
<input type="checkbox" id="optionA2" />
</div>
</div>
<div class="option2">
<input type="checkbox" id="optionB" />
<div id="suboption2">
<input type="checkbox" id="optionB1" />
<input type="checkbox" id="optionB2" />
</div>
</div>
<div class="option3">
<input type="checkbox" id="optionC" />
<div id="suboption3">
<input type="checkbox" id="optionC1" />
<input type="checkbox" id="optionC2" />
</div>
</div>
<!--No sub options on some-->
<div class="option4">
<input type="checkbox" id="optionD" />
</div>
JS
/*Option 1*/
$("#suboption1").hide();
$("#optionA").click(function() {
revealOptionA();
});
function revealOptionA(){
if($('#optionA').is(":checked")) {
$("#suboption1").show('hide');
} else {
$("#suboption1").hide('hide');
$("#optionA1").attr('checked', false);
$("#optionA2").attr('checked', false);
}
}
revealOptionA();
/*Option 2*/
$("#suboption2").hide();
$("#optionB").click(function() {
revealOptionB();
});
function revealOptionB(){
if($('#optionB').is(":checked")) {
$("#suboption2").show('hide');
} else {
$("#suboption2").hide('hide');
$("#optionB1").attr('checked', false);
$("#optionB2").attr('checked', false);
}
}
revealOptionB();
/*Option 3*/
$("#suboption3").hide();
$("#optionC").click(function() {
revealOptionC();
});
function revealOptionC(){
if($('#optionC').is(":checked")) {
$("#suboption3").show('hide');
} else {
$("#suboption3").hide('hide');
$("#optionC1").attr('checked', false);
$("#optionC2").attr('checked', false);
}
}
revealOptionC();
我已经把一个快速的jsfiddle更好地展示!
https://jsfiddle.net/j5pdq8p8/2/
任何意见,非常感谢!
在短你的第二个要求**如果家长没有被选中的孩子复选框也应该成为选中**会,如果你更换工作'attr' with'prop' - https://jsfiddle.net/j5pdq8p8/11/ –
感谢您的咨询!我会考虑到这一点,Aneesh下面的例子也使用了这个例子,他也减少了代码的数量。 – Tomatron