2015-04-12 9 views
6

Ho un elemento di scorrimento all'interno di una finestra.Trova offset relativo a padre scrolling div anziché finestra

Dire una divisione con una classe "currentContainer" con overflow automatico e quella divisione contiene un'enorme quantità di testo in modo che sia sufficientemente grande da scorrere.

Ora devo fare alcuni calcoli basati su quanto "currentContainer" ha fatto scorrere verso il basso + qual è l'offset di un elemento specifico dal suo div di scorrimento genitore (cioè "currentCoantainer").

Ma durante il calcolo dell'offset ottengo sempre l'offset dell'elemento figlio interno rispetto alla finestra non con "currentContainer".

JS FIDDLE

@Shikkediel Ho anche provato usando position().top anziché offset().top ma si è anche dare lo stesso risultato. Dai un'occhiata a questo:

JS FIDDLE 2

Si prega di non suggerirei di usare:

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

Perché questo sta andando a complicare i miei calcoli reali che sto per fare al di là di questo.

Motivo per cui non voglio utilizzare l'approccio sopra menzionato è che sto cercando di modificare un codice esistente che è già troppo disordinato ma funziona perfettamente per quanto riguarda la finestra, devo solo aggiornarlo in modo che inizi funzionante rispetto al suo genitore scrolling div.

Ho provato ad usare l'approccio sopra menzionato ma ha aperto una scatola di granchi per me. perché le funzioni sono troppo strettamente accoppiate. Quindi penso che se riesco a ottenere una soluzione semplice e lineare, sostituendo lo .offset().top con qualcos'altro.


ho provato il debug del codice e ancora senza fortuna ho aggiunto il codice vero e proprio a http://jsfiddle.net/arpitajain/kwkm7com/

P.S. È un codice vero ma non completo. Penso che il resto del codice non fosse necessario per questo errore.

+0

non è molto chiaro quello che chiedete, ma guarda in '.position()', questo è compensato rispetto al genitore. – Shikkediel

+0

Okay, mi riproverò la mia frase. – Arpita

+0

Cheers. Una buona descrizione aumenta le possibilità di trovare una soluzione. :-) – Shikkediel

risposta

8

Si potrebbe semplicemente sottrarre l'offset dell'elemento padre dall'offset dell'elemento figlio. Questo complicherà le altre cose che devi fare anche tu?

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

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

Problemi correlati