6 Stimmen

Falsche Verwendung des CSS-Klassenattributs oder gültiges Designmuster?

Wie Sie wahrscheinlich bereits wissen, ist es in JQuery einfach, alle Elemente im Dokument auszuwählen, die eine bestimmte CSS-Klasse haben, und dann mithilfe der Verkettung den ausgewählten Elementen gemeinsame Event-Handler zuzuweisen:

$(".toolWindow").click(toolWindow_click);
$(".toolWindow").keypress(toolWindow_keypress);

Wie üblich wird auch die Klasse "toolWindow" normalerweise in CSS definiert und mit einigen visuellen Stilen verbunden:

.toolWindow{
   color:blue;
   background-color:white;
}

Das Attribut class ist nun dafür verantwortlich, nicht nur das Aussehen (den visuellen Zustand) des Elements anzugeben, sondern auch das Verhalten. Infolgedessen verwende ich häufig diesen Ansatz und definiere CSS-Klassennamen eher als pseudo-objektorientierte Klassen denn als rein visuelle CSS-Klassen. Mit anderen Worten: Jede Klasse repräsentiert sowohl den Zustand (CSS-Stile) als auch das Verhalten (Ereignisse).

In einigen Fällen habe ich sogar Klassen ohne visuelles Styling erstellt und verwende sie einfach als bequeme Möglichkeit, den Elementen ein Verhalten zuzuweisen.

Das jQuery LiveQuery-Plugin (und die eingebaute Funktion live()) machen diesen Ansatz sogar noch effektiver, indem sie Ereignisse automatisch an dynamisch erstellte Elemente binden, die zu einer bestimmten Klasse gehören.

In letzter Zeit verwende ich in erster Linie Klassennamen, um ein gemeinsames Verhalten für verbundene DOM-Elemente zu definieren, und erst später, um einen visuellen Stil zu definieren.

Fragen: Ist dies ein schrecklicher Missbrauch des CSS-Attributs "class", und wenn ja, warum?

Andererseits ist es vielleicht ein vollkommen gültiger Ansatz, um die "Trennung von Belangen" weiter umzusetzen und die Wartbarkeit von HTML/DHTML-Seiten zu verbessern?

0 Stimmen

Eine Sache, die mir geholfen hat, ist das Voranstellen von Verhaltensklassen mit einem Unterstrich - <div class="_expandable"> zum Beispiel.

0 Stimmen

Sind nicht Klasse Verwendungen in Jquery langsamer als die von ID-Selektoren obwohl?

0voto

sqykly Punkte 1556

Ich möchte mich nicht darüber lustig machen, denn de facto scheint es koscher zu sein. Allerdings sehe ich auch, dass niemand erwähnt hat http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#class-html am Ende dieses Abschnitts empfiehlt der W3 die Verwendung von CSS-Klassennamen zur Bildung nicht standardisierter Mikrosyntaxen. Ich denke, sie warnen uns vor allem davor, eine Seite zu erstellen, die ausschließlich aus DIV- und SPAN-Elementen besteht und verschiedene Klassen als benutzerdefinierte Tags verwendet. Die Vermischung von Klassen und Verhalten wird nicht ausdrücklich erwähnt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X