I have the following html:
<div id="fanModals"></div>
<div class="container">
<div class="row">
<div class="col-sm-6 control-wrap">
<fieldset>
<legend> Impeller Size </legend>
<div id='btnImpSize' class='btn-group btn-group-justified' data-toggle='buttons'>
<label class='btn btn-default'><input type='radio' name='imp_size' id='18' value='18'> 18" </label>
<label class='btn btn-default'><input type='radio' name='imp_size' id='24' value='24'> 24" </label>
<label class='btn btn-default'><input type='radio' name='imp_size' id='26' value='26'> 26" </label>
<label class='btn btn-default'><input type='radio' name='imp_size' id='27' value='27'> 27" </label>
</div>
</fieldset>
<fieldset>
<legend> Cage Size</legend>
<div id='btnCageSize' class='btn-group btn-group-justified' data-toggle='buttons'>
<label class='btn btn-default'><input type='radio' name='cage_size' id='20.5' value='20.5'> 20.5" </label>
<label class='btn btn-default'><input type='radio' name='cage_size' id='28.5' value='28.5'> 28.5" </label>
<label class='btn btn-default'><input type='radio' name='cage_size' id='31' value='31'> 31" </label>
</div>
</fieldset>
</div>
</div>
</div>
I'm trying to target the parent label
element of the first radio <input>
by using:
$("#18").prop("checked", false).parent().removeClass("active").addClass("disabled");
When I do this I'm expecting it to target the parent <label>
but for some strange reason it targets all the way to the div
with the id of fanModals
. I'm doing this with the other radio buttons and it works fine. For example when I do:
$("#26").prop("checked", false).parent().removeClass("active").addClass("disabled");
it works. The only difference is I'm selecting a different radio button (that's not the first radio element of the group).
I know it's selecting the fanModals
class because I did a console.log($("#18").parent());
and its returning:
m.fn.init [div#fanModals.disabled, prevObject: m.fn.init(1), context: document]
All my tags are properly closed (double checked with a validator). What am I missing?
Adding full switch statement inside my radio changed event:
$('input:radio').change(function() {
var senderName = this.name;
var senderValue = this.value;
var senderID = this.id;
if (senderName == "imp_size"){
switch(senderValue) {
case "18":
$("#20\\.5").parent().removeClass("disabled");
$("#28\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#31").prop("checked", false).parent().removeClass("active").addClass("disabled");
//console.log('check');
break;
case "24":
$("#20\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#28\\.5").parent().removeClass("disabled");
$("#31").prop("checked", false).parent().removeClass("active").addClass("disabled");
break;
case "26":
$("#20\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#28\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#31").parent().removeClass("disabled");
break;
case "27":
$("#20\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#28\\.5").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#31").parent().removeClass("disabled");
break;
}
} else if (senderName == "cage_size") {
switch(senderValue) {
case "20.5":
//console.log($("#18").parent());
$("#18").parent().removeClass("disabled");
$("#24").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#26").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#27").prop("checked", false).parent().removeClass("active").addClass("disabled");
break;
case "28.5":
$("#18").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#24").parent().removeClass("disabled");
$("#26").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#27").prop("checked", false).parent().removeClass("active").addClass("disabled");
break;
case "31":
$("#18").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#24").prop("checked", false).parent().removeClass("active").addClass("disabled");
$("#26").parent().removeClass("disabled");
$("#27").parent().removeClass("disabled");
break;
}
}
});
When I change any radio in the Cage Size button group it will not act on the radio with an id of 18. I'm disabling certain radios based on which one is selected. Everything works except 18.