getElementsBySelector(selector): Wie viel einfacher wäre es doch, wenn es eine solche Funktion geben würde. Einfach den CSS-Selektor angeben und eineHTMLCollectionmit allen zutreffenden Elementen zurückbekommen. Allerdings gibt es von Dean Edwards eine Funktion, die sie größtenteils simuliert: cssQuery. Der Nachteil dieses Workarounds ist die Größe: 16 KB unkomprimiert und 6 KB komprimiert - gerade noch vertretbar.firstElement,nextElement, usw.: Ein gewisser Vorteil einerseits aber oft ein gewaltiger Nachteil ist, dass das DOM alles als Knoten betrachtet. Auch ein Leerzeichen zwischen zwei Elementen generiert einen neuen Knoten, genauso wie ein Kommentar. Wenn man nun das erste Element/Tag innerhalb eines anderen Elements zu bekommen, stößt man auf ein Problem:firstChildliefert möglicherweise einen Textknoten (mit Leerzeichen) und nicht das erste Element zurück.Die Möglichkeit mit einer
for...in-Schleife die Elemente einerHTMLCollectionzu durchlaufen: Wenn man das probiert, erhält man nicht jedes Element sondern die Indizes desHTMLCollection-Objekts. Das lässt sich teilweise durch Wrapper-Funktionen, die das ganze in einArrayumpackt, ersetzen.Ein Klassenmanagement-System: Man muss sich immer erst selbst Funktionen schreiben, die solche grundlegenden Abfragen ermöglichen. Wäre es nicht viel eleganter einfach auf
element.hasClass('klasse')zu prüfen? Mit Prototypen kann man so etwas aber recht einfach realisieren. Notwendige Funktionen wären mindestenshasClass(zum Überprüfen ob das Element die Klasse besitzt),addClass(um eine Klasse hinzuzufügen) undremoveClass(um eine Klasse zu entfernen). Zusätzlich wäre nochtoggleClass(wenn das Element die Klasse hat, wird sie entfernt, ansonsten hinzugefügt).
Comments
Zu den Punkten 1 und 2: Sowas ähnliches ist glaub ich mit XPath möglich. Fragt sich, wie die Browserunterstützung da aussieht, Firefox kann’s.
Ich weiß, es passt nicht wirklich hier rein. Aber diese Frage beschäftigt mich schon seit Kindheitstagen: Was um Himmels Willen bedeutet ‘timcn’?
Sag ich nicht :D