2016-07-12 11 views
1

Warum kehrt das immer wahr zurück?Warum JQuery Selector immer True in If Zustand?

<input type="checkbox" name="c1" id="c1" value="&controls=0">Hide Controls 
if ($('input[name=c1]:checked')){ 
    var controls = $('#c1').val(); 
} else { 
    var controls = ""; 
} 
alert(controls); 

Ist es ein Problem mit dem Wert? Aber wie Sie sehen, ich brauche einen Wert ...

+5

Selektoren ist immer wahr. Verwenden Sie '$ ('input [name = c1]'). Is (': checked')' stattdessen. – Mohammad

+0

Warum länge ich es nicht? @billyonecan –

+0

Ja ich habe verstanden, dass ich nicht verstanden habe, warum du gesagt hast Länge –

Antwort

0

JQuery-Selektor ein Objekt und Wähler Rück Objekt alway wahr ist. Wenn Sie das Vorhandensein eines Elements überprüfen möchten, können Sie .is() Methode oder .length Eigenschaft verwenden.

if ($("input[name=c1]").is(":checked")) 
// Or 
if ($("input[name=c1]:checked").length) 
+0

Warum haben wir alle -1 ich verstehe das aber nicht. Ich bin neu in stackoverflow und das ist einfach nervig. – Michal

+0

@MichalJarnot Manche Benutzer mögen keine Antworten auf eine Frage, die hauptsächlich darauf zurückzuführen ist, dass das OP eine grundlegende Mechanik missversteht. In der Regel werden sie die Frage zusammen mit den Antworten abstimmen, in der Regel, weil sie qualitativ hochwertige Antworten und Fragen wünschen. Ich habe die Antworten, die dem Problem des OP entsprechen, neu gewählt. –

0

Jemand gab mir minus 1 so habe ich beschlossen, meine Antwort zu bearbeiten:

Dies ist, wie Sie überprüfen, ob Kontrollkästchen aktiviert ist:

$('input[name=c1]').is(':checked') 
Diese

ist, wie Sie Wert einer Checkbox erhalten:

$('input[name=c1]').val(); 
+0

Mohammad kommentierte es zuerst, also glaube ich nicht, dass es in Ordnung ist, dich als Regenpfeifer zu schlagen. –

+0

@MichalJarnot Manche Benutzer neigen dazu, Antworten auf Fragen zu wählen, die sie für schlecht halten, oder haben bereits eine doppelte Antwort. In diesem Fall war die Ablehnung wahrscheinlich, weil Sie nur Code in die Antwort eingefügt haben, da es keine Erklärung dafür gibt, warum Ihr Code korrekt ist oder warum der OP-Code falsch ist. Obwohl es bearbeitet wurde, ist es nicht wahrscheinlich, dass der Benutzer zurückkam, um noch zu überprüfen, ob sich die Qualität dieser Antwort geändert hat. –

+0

Ich hätte das wahrscheinlich schon kommen sehen. Danke für die Erklärung. :) – Michal

0

Da der Ausdruck $ ('input [name = c1]: checked') ein Objekt zurückgibt, die t bereuen. alert ($ ('input [name = c1]: checked')); // [object Object]

und das Objekt eine Länge Eigenschaft mit einem Wert von 0 oder 1

Die richtige Wahl ist die length.It zu überprüfen, ist notwendig, sich auf ihn zu überprüfen

if($('input[name=c1]:checked').length) 
{ 
    var controls = $('#c1').val(); 
}else{ 
    var controls = ""; 
} 
alert(controls); 

https://api.jquery.com/checked-selector/