2015-04-12 14 views
6

Ich habe ein Scroll-Element in einem Fenster.Finden Offset relativ zu übergeordneten Scroll-Div anstelle von Fenster

Sagen Sie eine Abteilung mit einer Klasse "currentContainer" mit Überlauf automatisch und diese Abteilung enthält große Menge an Text, so dass es definitiv groß genug ist, um zu scrollen.

Jetzt muss ich einige Berechnungen basierend darauf, wie viel der "currentContainer" nach unten scrollte + was ist der Offset eines bestimmten Elements von seinem übergeordneten Scroll-Div (das ist "currentCoantainer").

Aber während der Berechnung von Offset bekomme ich immer den Offset des inneren Kindelements in Bezug auf Fenster nicht mit dem "currentContainer".

JS FIDDLE

@Shikkediel Ich habe auch versucht position().top statt offset().top verwendet, sondern ist auch das gleiche Ergebnis. Werfen Sie einen Blick auf sie:

JS FIDDLE 2

Bitte verwenden nicht den Eindruck erwecken:

$("<reference of scrolling element").scrollTop() 
+ 
$("<reference of child element whose offset I want to calculate>").offset().top 

Da dies wird meine tatsächlichen Berechnungen erschweren, die ich bin über darüber hinaus zu tun.

Grund für, warum ich den oben genannten Ansatz nicht verwenden möchte, ist, dass ich versuche, einen vorhandenen Code zu ändern, der bereits zu chaotisch ist aber perfekt im Hinblick auf Fenster funktioniert Ich muss es nur aktualisieren, damit es beginnt relativ zu seinem übergeordneten scrollenden div.

Ich versuchte mit der oben genannten Ansatz, aber es öffnete eine Schachtel mit Krabben für mich. weil Funktionen zu eng gekoppelt sind. Also ich denke, wenn ich einfache und direkte Lösung bekommen kann, d. H. .offset().top durch etwas anderes ersetzen.


Ich habe versucht, den Code debuggen und noch kein Glück ich hinzugefügt haben, den eigentlichen Code bei http://jsfiddle.net/arpitajain/kwkm7com/

P. S. Es ist tatsächlich Code aber nicht vollständig Ich denke, der Rest des Codes wurde für diesen Fehler nicht benötigt.

+0

nicht ganz klar, was man sich fragen, aber in '.position()', wird diese an die Mutter versetzt. – Shikkediel

+0

Okay, ich werde meinen Satz einrahmen. – Arpita

+0

Prost. Eine gute Beschreibung erhöht die Chancen, eine Lösung zu finden. :-) – Shikkediel

Antwort

8

Sie könnten einfach den Offset des übergeordneten Elements vom Offset des untergeordneten Elements subtrahieren. Verkompliziert das die anderen Dinge, die Sie auch tun müssen?

$(".getoffset").offset().top - $(".getoffset").offsetParent().offset().top 

http://jsfiddle.net/kmLr07oh/2/