jQuery velgeren for etiketten av en avkrysnings

stemmer
218
<input type=checkbox name=filter id=comedyclubs/>
<label for=comedyclubs>Comedy Clubs</label>

Hvis jeg har en sjekk boks med en merkelapp som beskriver det, hvordan kan jeg velge etiketten ved hjelp av jQuery? Ville det være lettere å gi etiketten tagge en ID og velg at bruk $(#labelId)?

Publisert på 27/07/2009 klokken 04:21
kilden bruker
På andre språk...                            


5 svar

stemmer
401

Dette bør fungere:

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

Se også: Velgere / attributeEquals - jQuery Javascript Library

Svarte 27/07/2009 kl. 04:23
kilden bruker

stemmer
41

Dette bør gjøre det:

$("label[for=comedyclubs]")

Hvis du har ikke alfanumeriske tegn i id må du omgir attr verdi med sitater:

$("label[for='comedy-clubs']")
Svarte 27/07/2009 kl. 04:23
kilden bruker

stemmer
5

En annen løsning kan være:

$("#comedyclubs").next()
Svarte 02/02/2011 kl. 10:23
kilden bruker

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

Dette bør tillate deg å velge etiketter for alle feltene i en sløyfe i tillegg. Alt du trenger for å sikre er etikettene skal si for='FIELD'der FIELDer id av feltet som denne etiketten blir definert.

Svarte 03/08/2012 kl. 07:08
kilden bruker

stemmer
0

Takket Kip, for de som kan være ute etter å oppnå de samme som bruker $ (denne) mens itera eller assosiere innenfor en funksjon:

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

Jeg så for en stund mens du arbeider dette prosjektet, men kunne ikke finne et godt eksempel, så jeg håper dette hjelper andre som kan være ute etter å løse det samme problemet.

I eksempelet ovenfor, min Formålet var å skjule radio innganger og style etikettene for å tilveiebringe en slicker brukeropplevelse (endring av orienteringen av flytskjemaet).

Du kan se et eksempel her

Hvis du liker eksempel her er 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;}

og den aktuelle delen av Javascript:

function changeHandler() {
    $(".orienSel").removeClass( "orienSel" );
    if(this.checked) {
        $("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
    }
};

En alternativ rot til det opprinnelige spørsmålet, gitt etiketten følger innspill, kan du gå med en ren css løsning og unngå å bruke Javascript helt ...:

input[type=checkbox]:checked+label {}
Svarte 05/03/2017 kl. 09:50
kilden bruker

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