sélecteur jQuery pour l'étiquette d'une case à cocher

voix
214
<input type=checkbox name=filter id=comedyclubs/>
<label for=comedyclubs>Comedy Clubs</label>

Si j'ai une case à cocher avec une étiquette décrivant, comment puis - je sélectionner l'étiquette en utilisant jQuery? Serait - il plus facile de donner l'étiquette tag un ID et sélectionnez qu'utiliser $(#labelId)?

Créé 27/07/2009 à 05:21
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
390

Cela devrait fonctionner:

$("label[for='comedyclubs']")

Voir aussi: Selectors / attributeEquals - JavaScript jQuery bibliothèque

Créé 27/07/2009 à 05:23
source utilisateur

voix
41

Cela devrait le faire:

$("label[for=comedyclubs]")

Si vous avez des caractères non alphanumériques dans votre identifiant, vous devez entourer la valeur attr avec des guillemets:

$("label[for='comedy-clubs']")
Créé 27/07/2009 à 05:23
source utilisateur

voix
5

pourrait être une autre solution:

$("#comedyclubs").next()
Créé 02/02/2011 à 11:23
source utilisateur

voix
63
$("label[for='"+$(this).attr("id")+"']");

Cela devrait vous permettre de sélectionner des étiquettes pour tous les champs dans une boucle ainsi. Tout ce que vous devez vous assurer est vos étiquettes devraient dire for='FIELD'FIELDest l'identifiant du champ pour lequel cette étiquette est définie.

Créé 03/08/2012 à 08:08
source utilisateur

voix
0

Merci Kip, pour ceux qui peuvent chercher à obtenir les mêmes en utilisant $ (ce) tout en réitérant ou l'association au sein d'une fonction:

$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );

Je regardais pendant un certain temps tout en travaillant ce projet, mais n'a pas pu trouver un bon exemple donc j'espère que cela aide les autres qui pourraient chercher à résoudre le même problème.

Dans l'exemple ci-dessus, mon objectif était de cacher les entrées radio et le style des étiquettes pour offrir une expérience utilisateur Slicker (changer l'orientation de l'organigramme).

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 initiale, compte tenu de l'étiquette suit l'entrée, vous pouvez aller avec une solution pure css et évitez d'utiliser tout à fait ... JavaScript:

input[type=checkbox]:checked+label {}
Créé 05/03/2017 à 09:50
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more