Hallo,
Einfachheit des Codes in einer Weise, dass ich alle Aspekte selbst überblicke.
Dann versuche einmal den jQuery-Code zu verstehen, denn dort stecken 8 Jahre Arbeit, Erfahrung und Optimierung drin.
Dieses jQuery mag ja mittlerweile Standard geworden sein, jedoch benötige ich seine Fähigkeiten nur marginal
*Alles*, was du da machst, ist Kernaufgabe von jQuery und anderen DOM-Bibliotheken.
kann vieles, das jQuery vielleicht einfacher machen könnte, mit kleinen Funktionen selbst nachbilden.
Natürlich, in der Regel auf Kosten von Flexibilität, Robustheit, Kompatibilität und u.U. Performance.
Das fortgeschrittenere Event-Handling, bei dem ich mehrere Listener an ein Event binden kann, verkompliziert meine Anwendungsfälle anscheinend nur.
Ich finde nichts daran komplizierter, element.addEventListener('click', handler)
anstatt element.onclick = handler
zu schreiben. Du kannst ferner viel Code dadurch sparen, nicht mit IE 8 kompatibel zu sein.
Meine Tests haben ergeben, dass jQuery das problem in meinem Beispiel nicht lösen kann.
jQuery besitzt die robustesten Funktionen für solche Zwecke. Wenn sich das Problem damit nicht lösen lässt, dann mit eigenen höchstwahrscheinlich auch nicht.
Der ist in meinem Beispiel im Prinzip genau so, wenn auch gerade anders herum, gelöst: Ich klettere den Baum bis zu <body> hinauf, indem ich immer wieder offset.Parent als Knoten "nach oben" verwende, um dann dessen Eigenschaften offsetTop und offsetLeft von meinen Koordinaten (initialisiert mit scrollTop und scrollLeft) abzuziehen.
Das ist unnötig kompliziert, soweit ich das sehe. getBoundingClientRect existiert und offsetParent ist fehleranfällig. Über e.pageX und e.pageY lässt ferner sich das Einrechnen der Scrollposition vermeiden.
Grüße
Mathias