Grazie Kip, per coloro che potrebbero voler ottenere lo stesso risultato usando $ (questo) mentre si itera o si associa all'interno di una funzione:
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
Ho cercato per un po 'di tempo mentre lavoravo a questo progetto, ma non sono riuscito a trovare un buon esempio, quindi spero che questo aiuti gli altri che potrebbero voler risolvere lo stesso problema.
Nell'esempio sopra, il mio obiettivo era nascondere gli ingressi radio e modellare le etichette per fornire un'esperienza utente più nitida (modificando l'orientamento del diagramma di flusso).
Puoi vedere un esempio qui
Se ti piace l'esempio, ecco il 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;}
e la parte rilevante di JavaScript:
function changeHandler() {
$(".orienSel").removeClass( "orienSel" );
if(this.checked) {
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
}
};
Una radice alternativa alla domanda originale, dato che l'etichetta segue l'input, potresti scegliere una soluzione CSS pura ed evitare di usare JavaScript del tutto ...:
input[type=checkbox]:checked+label {}
$('#comedyclubs')[0].labels
per accedere a tutte le etichette assegnate#comedyclubs
.