Ich habe eine ausgewählte (zur Hervorhebung) Klasse, die ich nur für jeweils ein Element hinzufügen möchte, so dass jedes Mal, wenn Sie auf ein neues Element klicken, die ausgewählte Klasse hinzugefügt wird und entfernt die ausgewählte Klasse von jedem zuvor angeklickten Element - egal welche.Einfache Hervorhebung nur eines Elements gleichzeitig Funktion
Ich kann es nur funktionieren, wenn Sie Elemente (Schaltflächen) direkt neben/vor klicken.
Wenn ich auf Button 1 und dann z. B. Button 4 klicke, fügt es einfach Klassen hinzu.
https://jsfiddle.net/vLkjovrv/1/
var myButtons = document.querySelectorAll('.my-button');
for (var i = 0; i < myButtons.length; i++) {
var button = myButtons[i];
button.addEventListener('click', function(event) {
this.classList.toggle("selected");
this.previousElementSibling.classList.remove("selected");
this.nextElementSibling.classList.remove("selected");
});
}
Ich bin mir bewusst, warum die oben nicht funktioniert, ich es direkt sagen, nur Adresse des nächsten/vorherigen, ich habe mit jedoch versucht, if/else classlist enthält! Dieses. classList.contains, e.currentTarget in verschiedenen Kombinationen, aber ich kann es nicht funktionieren lassen.
Ich glaube, ich bin für etwas, wie:
if (alle myButtons.classList.contains ("selected"))
entfernen
sonst
Add ausgewählt
I hab stundenlang nach einer vanilla JS Lösung gesucht, aber ich kann nur jQuery finden - ich möchte einfach JavaScript lernen.
Kann mir jemand hier ein paar Hinweise geben? Würde es sehr schätzen!
Wow Ich habe bereits mehrere große Antworten verwenden können, ich wünschte, ich wüsste, wie was man ist „beste“ zu beurteilen. – Capax
@ DavidWickström Lösung ist nicht die beste, denke ich. –