jQuery alle nächstens Elemente mit Klassennamen finden?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

https://jsfiddle.net/zo4m8xea/1/

Das dürfte dir helfen

Das stück JS sucht sich alle nachfolgenden Elemente. Sobald es auf eine "category" trifft, wird abgebrochen. Die bis dahin gefundenen werden Sichtbar/Unsichtbar geschaltet.

$(".category").on("click", e => {
  $(e.currentTarget).nextAll().each(function() {
    if ($(this).hasClass("category")) {
      return false;
    } else {
      $(this).toggleClass('show');
    }
  });
});
Woher ich das weiß:Berufserfahrung
zakali 
Fragesteller
 12.04.2022, 22:18

Der Code ist leicht nachvollziehbar, Danke dir vielmals. Umsetzung funktioniert auch einwandfrei.

0

Du kannst so vorgehen:

$(".category").on("click", evt => {
  $(evt.currentTarget).nextAll().each((_, el) => {
    const element = $(el);

    if (element.hasClass("sub-category")) {
      element.toggleClass("visible");
    }
    else if(element.hasClass("category")) {
      return false;
    }
  });
});

Es wird über alle Elemente mit der Klasse category iteriert, jedem Fund wird ein Klick-Handler zugewiesen. Bei Klick auf ein Element mit der Klasse category, werden die folgenden Nachbarn dieses Elements durchlaufen. Handelt es sich um eine Subkategorie, wird diesem entweder die CSS-Klasse visible hinzugefügt oder (wenn sie bereits existiert) wieder genommen. Beim ersten Vorkommen einer anderen Kategorie bricht die Schleife ab.

In deinem CSS-Teil kannst du folgend diese Regeln formulieren:

.sub-category { display: none }
.sub-category.visible { display: block }
zakali 
Fragesteller
 12.04.2022, 22:14

Interessanter Ansatz und vielen Dank so funktioniert es Einwandfrei!

0