En gros, je suis mon post et si je dois afficher un bouton radio et un div à l'intérieur, la solution suivante fonctionne très bien :
$(".tier1-options :radio").on("change", function (e) { //remove shown class from all tier2 options and clear values from all form elements inside it $('.tier2-options') .removeClass('shown') .find('input, select').val('') //show the related tier2 options $(this) .parents('.tier1-options') .find('.tier2-options') .addClass('shown') });
.tier2-options { display: none; margin-left: 1rem; padding: 1rem; background-color: #EEE; } .shown{ display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <h5>Select one of the checkboxes:</h5> <div class='tier1-options'> <label> <input name="useroption" type="radio" value="changeLocation"> Change Location </label> <div class="tier2-options"> <select name="availableMarkAsFullLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div> <div class="tier1-options"> <label> <input name="useroption" type="radio" value="updateLocation"> Update Location </label> <div class="tier2-options"> <select name="availableUpdateLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> </select> </div> </div> <div class="tier1-options"> <label> <input name="useroption" type="radio" value="retireLocation"> Retire </label> <div class="tier2-options"> <select name="availableRetireLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div>
Mais lorsque j'essaie d'ajouter plusieurs boutons radio, ce code ne fonctionne pas avec l'option Contenu mobile
. En gros, lorsque je clique sur Tier I Move
ou Tier II Move
移动内容
选项。基本上,当我点击Tier I Move
或Tier II Move
subtier2-options
, subtier2-options
n'apparaît pas
$(".tier1-options :radio").on("change", function (e) { //remove shown class from all tier2 options and clear values from all form elements inside it $('.tier2-options') .removeClass('shown') .find('input, select').val('') //show the related tier2 options $(this) .parents('.tier1-options') .find('.tier2-options') .addClass('shown') }); $(".subtier1-options :radio").on("change", function (e) { //remove shown class from all tier2 options and clear values from all form elements inside it $('.subtier2-options') .removeClass('shown') .find('input, select').val('') //show the related tier2 options $(this) .parents('.subtier1-options') .find('.subtier2-options') .addClass('shown') });
.tier2-options { display: none; margin-left: 1rem; padding: 1rem; background-color: #EEE; } .shown{ display: block; } .subtier2-options { display: none; margin-left: 1rem; padding: 1rem; background-color: #EEE; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <h5>Select one of the checkboxes:</h5> <div class='tier1-options'> <label> <input name="useroption" type="radio" value="changeLocation"> Change Location </label> <div class="tier2-options"> <select name="availableMarkAsFullLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div> <div class="tier1-options"> <label> <input name="useroption" type="radio" value="updateLocation"> Update Location </label> <div class="tier2-options"> <select name="availableUpdateLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> </select> </div> </div> <div class="tier1-options"> <label> <input name="useroption" type="radio" value="retireLocation"> Retire </label> <div class="tier2-options"> <select name="availableRetireLocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div> <div class='tier1-options'> <label> <input name="useroption" type="radio" value="moveContents"> Move Contents </label> <div class="tier2-options"> <div class='subtier1-options'> <label> <input name="useroption" type="radio" value="moveContentsTierI"> Tier I move </label> <div class="subtier2-options"> <select name="availableTierILocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div> <!--end of <div class='subtier1-options'> --> <div class='subtier1-options'> <label> <input name="useroption" type="radio" value="moveContentsTierII"> Tier II move </label> <div class="subtier2-options"> <select name="availableTierIILocations"> <option value="-">--Please Select--</option> <option value="3">BOX#3</option> <option value="6">FREEZER#1</option> <option value="8">FREEZER#2</option> <option value="19">BOX#9</option> <option value="20">QBUILDING</option> </select> </div> </div> <!--end of <div class='subtier1-options'> --> </div> </div>
Lorsque vous utilisez des classes dans des fichiers CSS, les classes seront appliquées dans l'ordre dans lequel elles ont été écrites. Parce que
shown
类位于subtier2-options
类之上,因此它首先被应用。因此,当应用subtier2-options
时,显示设置为block
,然后更改为none
.Il vous suffit de changer l'ordre des classes en CSS comme indiqué ci-dessous et cela fonctionnera.