2012-03-16 21 views
13

Mam szablon z dużą ilością pozycjonowania absolutnego, teraz mój główny tekst div ma dynamiczną wysokość i potrzebuję dynamicznej stopki, która następuje po tym.CSS zestaw div 'top' z jquery z div 'wysokość'

Próbowałem ustawić górny stan stopki div wartością wysokości z elementu div tekstu.

<script type="text/javascript"> 
    $("#footer").top($("#text").height()); 
    </script> 

Niestety, narzędzia Chrome Dev wyrzuca błąd:

Uncaught TypeError: Object [object Object] has no method 'top' (anonymous function)

Więc jakiś pomysł lub pomocy dla mojego problemu?

Edit:

więc próbowałem

$('#footer').css('top', $('#text').outerHeight() + 'px'); 

i działa dobrze, jest to możliwe, aby dodać trochę px do tej górnej wartości?

Odpowiedz

17

Musisz ustawić właściwość css 'top' na div #footer, nie zadzwonić .TOP() na sam div.

$("#footer").css('top', $("#text").height() + "px"); 

lub wzdłuż tych linii

+0

przynosi mi> Uncaught SyntaxError: nieoczekiwany token) –

+0

prawdopodobnie trzeba pop jednostkę na backend wysokości(), ponieważ zwraca tylko numeryczne przedstawienie wartości. – dougajmcdonald

+0

to był problem z mojego "jQuery (document) .ready (function ($) {" Naprawiłem to –

0

Debugger jest poprawny, jQuery nie wykreśla metody top. wolisz używać .css() jak

$('#footer').css('top', $('#text').height()); 
+0

nie byłoby to nie powieść, jeśli 'top' nieruchomość nie jest css zestaw explicity? – Blazemonger

+1

@ mblase75: jQuery (właściwie przeglądarka), po prostu utworzyłby tę właściwość css, jeśli nie jest jeszcze wypełniona. Bardziej poprawnie, wszystkie właściwości css są dostępne w każdej chwili, to po prostu zależy od tego, czy mają one wartość, czy nie. – jAndy

+0

Źle odczytałem pytanie - warto jednak wskazać na (mało prawdopodobną) komplikację, która wynikłaby, gdyby zarówno właściwości "top", jak i "bottom" były ustawione w tym samym czasie. Jeśli OP manipuluje czyimś kodem, to własność 'bottom' powinna zostać jawnie wyczyszczona, aby była bezpieczna. – Blazemonger

4

Wymień .top z .offset({top: somenumber})

http://api.jquery.com/offset/

+0

Ten działał dla mnie. Nie jestem pewien, czy wersja .css nie powiodła się, ponieważ miałem istniejący css na elemencie, ale niezależnie, ten wydaje się go naprawić. –

1

Proponuję:

<script type="text/javascript"> 
    jQuery(document).ready(function($){ 
     $('#footer').css('top', $('#text').outerHeight() + 'px'); 
    }); 
</script>