Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Kolejność wykonywania skryptu, Skrypt w head, $('document').ready i brak ustawionej wyso
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Spotkałem się z sytuacją która mnie lekko zdziwiła. Postaram się pokrótce ją opisać.

Skrypty JS zawsze wciskam w sekcję <head> dokumentu. Po zapoznaniu się ze stylem obiektowym w JS stało się to o tyle proste że całą funkcjonalność przerzucam na obiekty ( powiedzmy tworzę obiekt menu, a w nim umieszczam metody zajmujące się zdarzeniami ). Natomiast ich inicjalizacją zajmuje się osobny plik JS w którym umieszczam kod za to odpowiedzialny ( na przykład tworzenie obiektu i wykonanie metod przypisania zdarzenia ).

Teraz do sedna sprawy. W jQuery istnieje odpowiednik window.onload czyli funkcja ready() odpowiedzialna ona jest za wykonanie określonych zadań po załadowaniu dokumentu. Dzisiaj 2 godziny spędziłem na debugowaniu skryptu który nie miał dostępu do wysokości elementu DOM, bo ten nie był jeszcze do końca załadowany. Kiedy przeniosłem inicjalizację za miejsce ( pod ) w który ten element się znajdował, wszystko zaczęło działać.

Na razie prosiłbym was o to żebyście spróbowali mi jakoś wyjaśnić jak to się mogło stać że $("document").ready(function(){ kod }); wykonywał się kiedy właściwość height rzeczonego elementu DOM nie była jeszcze zdefiniowana. Jeśli nie będziecie w stanie to uproszczę kod i go tutaj wkleję.

Z góry dzięki za zainteresowanie tematem.
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(orglee @ 18.02.2009, 20:10:05 ) *
W jQuery istnieje odpowiednik window.onload czyli funkcja ready()
No właśnie nie tak do końca. window.onload zostanie wywołane po załadowaniu całego dokumentu. Np. IE wywoła zdarzenie dopiero po załadowaniu wszystkich obrazków. A jQuery'owe ready() wywoła się po załadowaniu samego kodu HTML (czyli drzewa DOM).

Teoretycznie opisana przez Ciebie sytuacja nie powinna się zdarzyć. Jedyne co mi przychodzi do głowy to to, że podczas wywoływania funkcji wysokość elementu jeszcze nie była znana, bo nie wszystkie właściwości zostały przypisane do elementów, ale to raczej głupi pomysł.

Próbowałeś czy zadziała z window.onload?

[edit]
http://docs.jquery.com/Events/ready :
Cytat
Binds a function to be executed whenever the DOM is ready to be traversed and manipulated.
Więc teoretycznie nie powinieneś mieć problemów.

Ten post edytował sowiq 18.02.2009, 20:27:08
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 10:32