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?