![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Dawno dawno tematu... czytałem książkę o JS w której zawarty był rozdział o preloadingu obrazków. Chciałem z pamięci wykonać port tego skryptu na jQuery, ale zdaje się że coś spietruszyłem. Jak najadę na przycisk od prawej bądź lewej strony to obrazek się podmienia, a potem znika. Zależy to też od szybkości z jaką najadę na owy link i z niego wyjdę.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Możesz wyjaśnić, dlaczego w JS chcesz robić coś, co możesz robić w CSS?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Jak sama nazwa wskazuje jest to preloader. Jeśli obrazek jest za duży, a użytkownik ma badziewny net to chwilę potrwa zanim mu się dany element strony załaduje. Może to spowodować przy np. menu brak elementu po najechaniu na niego.
Nie mniej jednak będę musiał prawdopodobnie zrezygnować z tej metody skoro nikt nie wiem gdzie może leżeć błąd. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
jako, że jQuery nie używam oraz nie dałeś przykładu live to nie musisz czytać bo to może się okazać "bzdurą"
pierwsze napiszę gdzie mi się wydaje, że to się może sypać - zważywszy na to, iż napisałeś o szybkości najazdu myszką na element... i dalej korzystasz z metody .replaceWith do podmiany obiektu w drzewie DOM - gdzie to też z tego obiektu który podmieniasz przechowujesz informację także... w ogóle to takie pytanie po co podmieniasz ten element?? - czemu nie skorzystasz ze standardowej podmiany źródła z obiektu image (przykład) ![]() w css nie ostylowałeś wielkości/rozmiaru linków, więc podczas podmieniania elementu w pierw następuje usunięcie starego (link się "kurczy" gdyż chwilę nie ma treści) po czym wstawiasz obrazek, jednak zanim wstawisz obrazek myszką możesz znaleść się poza pustym linkiem (.mouseleave) i od razu wykonujesz drugą metodę z hover'a (i tu raz zdążysz podmienić obrazek na nowy i będzie informacja co i jak i wróci na stary, a i może się zdarzyć, że z nowym nie zdążysz i błąd będzie na leave bądź enter jeśli ten link będzie "skakał")... idąc dalej analogiczną sytuację możesz mieć przy bardzo szybkim przesunięciu myszki nad linkiem - spróbujesz wykonać drugą akcję podczas gdy jeszcze tam nie zostanie wczytany element obrazka... w skrócie - podmieniaj .src obrazka lub określ rozmiar linku i informacje dodatkowe przechowuj w tym linku a nie w obrazku (i nie bierz za pewnik, że tam będzie element obrazka, że zdążysz go wstawić)... Ten post edytował zegarek84 6.04.2010, 14:39:51 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Ehh oferma ze mnie. Zorientowałem się o co ci chodzi po pierwszym akapicie. I oczywiście zaczęło działać.
Mam jeszcze jedno pytanie dotyczące stricte jQuery. Jak w obiekcie wyselekcjonowanym za pomocą jQuery przechować informację? np. Jeśli bym chciał opatulić link w jQuery $($link) to jak mam do niego przypisać zmienne overImage i outImage, żebym mógł się do nich odwołać w handlerze zdarzeń onmouseover i onmouseout?
Ten post edytował starach 6.04.2010, 17:52:33 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Ehh oferma ze mnie. Zorientowałem się o co ci chodzi po pierwszym akapicie. I oczywiście zaczęło działać. Mam jeszcze jedno pytanie dotyczące stricte jQuery. Jak w obiekcie wyselekcjonowanym za pomocą jQuery przechować informację? np. Jeśli bym chciał opatulić link w jQuery $($link) to jak mam do niego przypisać zmienne overImage i outImage, żebym mógł się do nich odwołać w handlerze zdarzeń onmouseover i onmouseout? heh ![]() ![]() js jest mimowolnie silnie obiektowy - nawet zwykła funkcja potrafi być obiektem - nie sorki - zapędzam się ;p.. gdy przypisujesz anonimową funkcję do danego zdarzenia to suma sumarum ta funkcja jest zawsze inna - jak to można wykorzystać ![]() przypisując te zdarzenia w pętli tylko raz musisz pamiętać indeks zapisanej zmiennej (źródła/ścieżki w zmiennej) z over bądź out i przypisując zdarzenie robisz np. tak:
albo jeszcze inaczej (skoro i tak za każdym razem przypisujesz nową funkcje ;p) możesz trzymać referencję do obrazków w jakiejś tablicy i:
idąc dalej mały przykład gdzie nie musisz pamiętać w ogóle referencji do zmiennych - trochę przykład niby pod wyciek pamięci ale skoro to raz wykonasz w konstruktorze tego handlera to to Ci nie grozi (a żeby był gdzieś uchwyt do tych obiektów to też w tablicy możesz pamietać - tylko daję przykład że wszystkim zmiennym możesz przypisać null) - takie coś se na szybko po treningu napisałem i hula ![]()
PS. skoro korzystasz z jQuery to używaj mouseenter a nie over gdyż over tutaj może Ci się wykonać 2 razy choć tego nie zauważysz - czyli enter na to jest optymalniejszy - podobnie z leave i out... idąc dalej to użyj tego hover gdyż to połączenie mouseenter i leave ![]() -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:46 |