2009-06-25 15 views
5

Nie mogę znaleźć sposobu, aby uzyskać przesunięcie Top elementu w tabeli. Działa dobrze na elementach spoza tabel, ale wszystkie elementy w tabeli zwracają ten sam wynik i zazwyczaj znajduje się on u góry strony. Próbowałem tego w Firefoksie i Chrome. Jak uzyskać przesunięcie Top elementu w tabeli?Uzyskiwanie przesunięcia Top elementu w tabeli

Odpowiedz

17

offsetTop zwraca wartość w stosunku do offsetParent; musisz rekurencyjnie dodać offsetParent.offsetTop przez wszystkich rodziców, aż do offsetParent jest . Rozważ skorzystanie z metody jQuery 'offset().

EDIT: Jeśli nie chcesz używać jQuery, można napisać metodę takiego (niesprawdzone):

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

To nie działa w IE7 (rzetelnie). IE5-7 nie liczy elementów ze względnym pozycjonowaniem jako offsetParents. – KeatsKelleher

+0

@SLaks genialne rozwiązanie :) – Muhammed

Powiązane problemy