2009-06-25 8 views
5

Non riesco a capire come ottenere l'offsetTop di un elemento all'interno di una tabella. Funziona bene sugli elementi esterni alle tabelle, ma tutti gli elementi all'interno di una tabella restituiscono lo stesso risultato e solitamente si trova nella parte superiore della pagina. Ho provato questo in Firefox e Chrome. Come ottengo l'offsetTop di un elemento in una tabella?Get offsetTop dell'elemento in una tabella

risposta

17

offsetTop restituisce un valore relativo a offsetParent; è necessario aggiungere ricorsivamente offsetParent.offsetTop attraverso tutti i genitori fino a offsetParent è null. Prendi in considerazione l'utilizzo del metodo jQueryoffset().

EDIT: Se non si desidera utilizzare jQuery, è possibile scrivere un metodo come questo (non testata):

function offset(elem) { 
    if(!elem) elem = this; 

    var x = elem.offsetLeft; 
    var y = elem.offsetTop; 

    while (elem = elem.offsetParent) { 
     x += elem.offsetLeft; 
     y += elem.offsetTop; 
    } 

    return { left: x, top: y }; 
} 
+1

Questo non funziona in IE7 (affidabile). IE5-7 non conta gli elementi con posizionamento relativo come offsetParents. – KeatsKelleher

+0

@SLaks soluzione brillante :) – Muhammed

Problemi correlati