Also bin ich ein relativer Neuling für JS und die Jquery-Bibliothek. Ich habe mit etwas herumgespielt und kann sehen, dass es extrem unordentlich ist. Hier hoffte ich, dass ihr mir helfen könnt, einen besseren Weg vorzuschlagen, um das zu erreichen, was ich erreichen möchte.Kontrollkästchenoptionen ausblenden und aufdecken - Jquery aufräumen
Ziel:
mehrere Kontrollkästchen haben, setzen Sie von Kontrollkästchen, von denen einige ausgewählt, wenn eine Unter offenbaren. Wenn das übergeordnete Element deaktiviert ist, sollten die untergeordneten Kontrollkästchen ebenfalls deaktiviert werden.
HTML (dies vereinfacht)
<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();
Ich habe eine schnelle JSFiddle zusammen besser zu demonstrieren!
https://jsfiddle.net/j5pdq8p8/2/
Jede Beratung ist sehr zu schätzen!
Kurz Ihre zweite Anforderung an ** Wenn die Eltern nicht markiert die Kinder Kontrollkästchen ist, sollte auch nicht aktiviert werden ** wird funktionieren, wenn Sie ersetzen 'attr 'mit' prop' - https://jsfiddle.net/j5pdq8p8/11/ –
Danke für den Hinweis! Ich werde dies berücksichtigen, Aneesh 'Beispiel unten verwendet dies auch und er hat den Code eine große Menge reduziert – Tomatron