Merci Kip, pour ceux qui cherchent à obtenir le même résultat en utilisant $ (this) lors de l'itération ou de l'association au sein d'une fonction:
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
J'ai cherché pendant un certain temps en travaillant sur ce projet, mais je n'ai pas pu trouver un bon exemple, donc j'espère que cela aidera d'autres personnes qui cherchent peut-être à résoudre le même problème.
Dans l'exemple ci-dessus, mon objectif était de masquer les entrées radio et de styliser les étiquettes pour offrir une expérience utilisateur plus fluide (en changeant l'orientation du diagramme).
Vous pouvez voir un exemple ici
Si vous aimez l'exemple, voici le 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;}
et la partie pertinente du JavaScript:
function changeHandler() {
$(".orienSel").removeClass( "orienSel" );
if(this.checked) {
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
}
};
Une racine alternative à la question d'origine, étant donné que l'étiquette suit l'entrée, vous pouvez opter pour une solution CSS pure et éviter d'utiliser JavaScript complètement ...:
input[type=checkbox]:checked+label {}
$('#comedyclubs')[0].labels
pour accéder à toutes les étiquettes attribuées#comedyclubs
.