Wie fügt man einem jQuery-Element eine Klasse hinzu, wenn eine Bedingung wahr ist, und entfernt dieselbe Klasse, wenn die Bedingung falsch ist?

Lesezeit: 2 Minuten

Gibt es einen kürzeren Weg, um Folgendes zu tun?

var select_all_checkbox = $("input.select_all");
var is_checked = select_all_checkbox.prop("checked");

if (is_checked) {
    select_all_checkbox.parent().addClass("selected");
} else {
    select_all_checkbox.parent().removeClass("selected");
}

Verwenden toggleClasswobei ein zweites Argument (ein boolescher Wert) übergeben wird, das angibt, ob die Klasse hinzugefügt werden soll oder nicht:

select_all_checkbox.parent().toggleClass("selected", is_checked);

Wenn Sie mehrere Elemente ausgewählt haben von input.select_allSie müssen sie jedoch durchlaufen:

$("input.select_all").each(function() {
    $(this).parent().toggleClass('selected', this.checked);
});

  • Es führt nicht wirklich zum gleichen Effekt.

    – Arsen

    7. April 2014 um 23:37 Uhr

  • Ich denke, OP erwartet die is_checked boolean, um sich selbst automatisch zu aktualisieren. Vielleicht möchten Sie den booleschen Wert jedes Mal aktualisieren, wenn das Kontrollkästchen über die geändert wird .change() Veranstaltung…

    – Frottee

    7. April 2014 um 23:39 Uhr

  • Denn toggleClass fügt die Klasse immer hinzu, wenn sie nicht vorhanden ist, und entfernt sie andernfalls. Die addClass/removeClass-Methoden werden im Gegensatz dazu keine Änderungen an den Klassen des Elements vornehmen, wenn addClass auf einem Element ausgeführt wird, das die Klasse bereits hat (oder wenn removeClass auf einem Element ausgeführt wird, das die Klasse nicht hat).

    – Arsen

    7. April 2014 um 23:40 Uhr

  • @aruseni: Vielleicht war ich nicht klar genug: Wenn Sie den Zustand als zweites Argument übergeben und es ist true, toggleClass werde die Klassen hinzufügen. Wenn der Staat ist false, toggleValue wird die Klassen entfernen. Das ist exakt das gleiche wie anrufen addClass wenn der Staat ist true und removeClass wenn der Staat ist false. toggleClass nicht abwechselnd die Klassen umschalten, wenn ein Zustand als zweites Argument übergeben wird.

    – Felix Klinge

    8. April 2014 um 1:06 Uhr


  • Wow. Eigentlich hast du recht, das funktioniert wie erwartet. Vielen Dank!

    – Arsen

    8. April 2014 um 3:31 Uhr

Unbedingt! Sie können programmgesteuert zwischen den Methoden (addClass/removeClass) wählen und diejenige verwenden, die zurückgegeben wird, wenn ein Ausdruck ausgeführt wird.

So was:

var select_all_checkbox = $("input.select_all");
var is_checked = select_all_checkbox.prop("checked");

select_all_checkbox.parent()[is_checked ? "addClass" : "removeClass"]("selected");

  • Hier ist in Coffeescript: $(‘.some-selector’)[if isChecked then ‘addClass’ else ‘removeClass’] ‘ausgewählt’

    – Rui Nunes

    2. Juni 2016 um 10:59 Uhr

  • während nicht so sauber wie mit toggleClassdies ist dennoch eine ziemlich nette Methode

    – woojoo666

    18. Dezember 2018 um 12:27 Uhr

1435750cookie-checkWie fügt man einem jQuery-Element eine Klasse hinzu, wenn eine Bedingung wahr ist, und entfernt dieselbe Klasse, wenn die Bedingung falsch ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy