jQuery selector voor het etiket van een checkbox

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

Als ik een vakje met een label beschrijven, hoe kan ik het label met behulp van jQuery selecteren? Zou het makkelijker om te geven het label tag een ID en selecteer dat het gebruik $(#labelId)?

De vraag is gesteld op 27/07/2009 om 05:21
bron van user
In andere talen...                            


5 antwoorden

stemmen
390

Dit zou moeten werken:

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

Zie ook: Selectors / attributeEquals - jQuery JavaScript-bibliotheek

antwoordde op 27/07/2009 om 05:23
bron van user

stemmen
41

Dit zou het moeten doen:

$("label[for=comedyclubs]")

Als u nog niet alfanumerieke tekens in uw id dan moet je omringen de attr waarde met quotes:

$("label[for='comedy-clubs']")
antwoordde op 27/07/2009 om 05:23
bron van user

stemmen
5

Een andere oplossing zou kunnen zijn:

$("#comedyclubs").next()
antwoordde op 02/02/2011 om 11:23
bron van user

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

Dit moet toelaten om labels voor alle velden in een lus te kiezen als goed. Alles wat je nodig hebt om ervoor te zorgen dat uw labels zou moeten zeggen for='FIELD', waar FIELDis het id van het gebied waarvoor dit label wordt gedefinieerd.

antwoordde op 03/08/2012 om 08:08
bron van user

stemmen
0

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 {}
antwoordde op 05/03/2017 om 09:50
bron van user

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