2016-03-26 16 views
0

Ich bin mit einem Kontrollkästchen.Überprüfen, ob das Kontrollkästchen eine Klasse hat und aktiviert ist

if ($(this).hasClass("select")) { // To check class name 
    if ($(this).is(':checked')) { // to check whether it is checked 
    // some code 
    } 
} 

Jetzt habe ich zwei if-Anweisungen. Wie füge ich sie in einer einzigen Bedingung zusammen?

Ich habe versucht:

1)

if ($(this).hasClass("select").is(':checked')) { 
    //statements 
} 

Es gab mir eine Fehlermeldung: .hasClass("...").is('...') is not a function.

2)

if ($(this).hasClass("select") && $(this).is(':checked')) { 
    // some code 
} 
else if ($(this).hasClass("select") && $(this).not(':checked')) { 
    // some code 
} 

Es funktioniert.

Wie diese zwei in einer Anweisung vereinfacht zusammengeführt werden? Können wir den Zustand vereinfachen?

Antwort

1

Sie können es durch tun,

var cond = $(this).is(".select:checked"); 
var val = parseInt($(this).parent().next().text()); 
sum += (cond ? val : -(val)); 
+0

Addition geschieht nicht – Prabs

+0

@Prabs Can u das Problem in einer Geige reproduzieren? Das sollte funktionieren. –

+0

[fiddle] (http://jsfiddle.net/sr6gaL37/1/) subtrahieren bei un-check passiert nicht – Prabs

0

Sie können die Klasse Überprüfung in .is() bewegen:

if ($(this).is(".select:checked")) 

$(this).hasClass("select").is(':checked') funktioniert nicht, weil .hasClass() kehrt boolean, nicht das $(this) Objekt, so kann man nicht Kette jQuery Methoden auf sie.

Verwandte Themen