Thanks Kip, voor degenen die kunnen worden op zoek naar hetzelfde met behulp van $ (this), terwijl de iteratie of waarbij binnen een functie te bereiken:
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
Ik keek voor een tijdje terwijl ik dit project, maar kon het niet vinden een goed voorbeeld, dus ik hoop dat dit helpt anderen die misschien op zoek naar hetzelfde probleem op te lossen.
In het bovenstaande voorbeeld, mijn doel was om de radio-ingangen te verbergen en stijl van de labels een gelikter user experience (het veranderen van de oriëntatie van de flowchart) te verschaffen.
U kunt hier een voorbeeld zien
Als je van het voorbeeld, hier is de css:
.orientation { position: absolute; top: -9999px; left: -9999px;}
.orienlabel{background:#1a97d4 url('http://www.ifreight.solutions/process.html/images/icons/flowChart.png') no-repeat 2px 5px; background-size: 40px auto;color:#fff; width:50px;height:50px;display:inline-block; border-radius:50%;color:transparent;cursor:pointer;}
.orR{ background-position: 9px -57px;}
.orT{ background-position: 2px -120px;}
.orB{ background-position: 6px -177px;}
.orienSel {background-color:#323232;}
en het desbetreffende deel van de JavaScript-code:
function changeHandler() {
$(".orienSel").removeClass( "orienSel" );
if(this.checked) {
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
}
};
Een alternatieve wortel naar de oorspronkelijke vraag, gezien het label volgt de input, kan je met een pure css-oplossing en vermijd het gebruik van JavaScript in totaal ...:
input[type=checkbox]:checked+label {}