jQuery-Selektor für das Label eines Checkbox

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

Wenn ich ein Kontrollkästchen mit einem Etikett beschreibt es, wie kann ich wählen Sie das Etikett mit jQuery? Wäre es leichter, das Etikett ID - Tag zu geben , und wählen Sie, dass die Verwendung $(#labelId)?

Veröffentlicht am 27/07/2009 um 05:21
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
390

Das sollte funktionieren:

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

Siehe auch: Selektoren / attributeEquals - jQuery JavaScript - Bibliothek

Beantwortet am 27/07/2009 um 05:23
quelle vom benutzer

stimmen
41

Dies sollte es tun:

$("label[for=comedyclubs]")

Wenn Sie nicht alphanumerische Zeichen in Ihrer ID haben, dann müssen Sie den attr Wert mit Anführungszeichen:

$("label[for='comedy-clubs']")
Beantwortet am 27/07/2009 um 05:23
quelle vom benutzer

stimmen
5

Eine andere Lösung könnte sein:

$("#comedyclubs").next()
Beantwortet am 02/02/2011 um 11:23
quelle vom benutzer

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

Auf diese Weise können Sie auch Etiketten für alle Felder in einer Schleife wählen. Alles , was Sie sicherstellen müssen, ist Ihre Etiketten sagen sollte , for='FIELD'wo FIELDdie ID des Feldes ist , für die dieses Label definiert wird.

Beantwortet am 03/08/2012 um 08:08
quelle vom benutzer

stimmen
0

Dank Kip, für diejenigen, die suchen die gleichen mit $ (this), während Iterieren oder Zuordnen innerhalb einer Funktion zu erreichen:

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

Ich sah eine Zeit lang während dieses Projekt zu arbeiten, konnte aber nicht ein gutes Beispiel finden, so ich hoffe, dass dies hilft andere, die das gleiche Problem lösen kann suchen.

In dem obigen Beispiel war mein Ziel, den Funk Eingänge zu verstecken und die Etiketten-Stil Eine schlankeres Benutzererfahrung zu liefern (die Ausrichtung des Flußdiagramms verändern).

Sie können ein Beispiel hier sehen

Wenn Sie das Beispiel möchten, hier ist die 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;}

und der relevante Teil des JavaScript:

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

Ein alternatives Root-Verzeichnis auf die ursprüngliche Frage, das Etikett folgt den Eingang gegeben, könnte man mit einer reinen CSS-Lösung gehen und mit Hilfe von JavaScript ganz vermeiden ...:

input[type=checkbox]:checked+label {}
Beantwortet am 05/03/2017 um 09:50
quelle vom benutzer

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