Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS] 2 sekundowy mouseover
toaspzoo
post
Post #1





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Witam, chcę osiągnąć taki efekt:

---
Po najechaniu na diva i trzymaniu na nim kursora (nie wyjeżdżamy poza div) po 2 sekundach jest wywoływana jakaś funkcja
Lecz jeśli nie dotryzmamy tych 2 sekund, tylko zdjedziemy z diva wcześniej to nic się nie dzieję
---

Taki efekt chciałbym uzyskać, tylko jak ?

Taki 2 - sekundowy onmouseover (IMG:style_emoticons/default/smile.gif)


Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




setTimeout na onmouseover i clearTimeout na onmouseout.

Dalej sobie poradzisz. [;
Go to the top of the page
+Quote Post
toaspzoo
post
Post #3





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Dzieki (IMG:style_emoticons/default/smile.gif)

Niby takie proste, takie oczywiste a człowiek od razu nie wpadnie (IMG:style_emoticons/default/smile.gif)

Witam ponownie, w divie pojawil sie kolejny problem...

otoz jest opisane zdarzenie onmouseout w divie, w którym jest wyświetlony (załadowany) jakiś tekst (strona, bez divów, sam teskt, ew. <font>, span), akcja działa poprawnie - po zjechaniu z niego myszką znika, lecz problem pojawia się wtedy, gdy najadę myszką na jakiś tekst w tym divie - także div znika - reaguje tak, jakbym z niego zjechał, mimo tego, że cały czas na nim jestem.
Go to the top of the page
+Quote Post
prowseed
post
Post #4





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


Cytat(toaspzoo @ 1.02.2012, 10:31:49 ) *
Niby takie proste, takie oczywiste a człowiek od razu nie wpadnie (IMG:style_emoticons/default/smile.gif)

Nie to, ze nie wpadnie, tylko nie poszuka.

Cytat
otoz jest opisane zdarzenie onmouseout w divie, w którym jest wyświetlony (załadowany) jakiś tekst (strona, bez divów, sam teskt, ew. <font>, span), akcja działa poprawnie - po zjechaniu z niego myszką znika, lecz problem pojawia się wtedy, gdy najadę myszką na jakiś tekst w tym divie - także div znika - reaguje tak, jakbym z niego zjechał, mimo tego, że cały czas na nim jestem.

Jak to wyglada? Znowu trzeba wróżyć... Masz ponad 400 postów, a zachwujesz się jakbyś dopiero co trafił na to forum. Może nałóż pustego diva na całą warstwę [text + box] z odpowiednim z-index? Ten tekst to jest jakoś ładowany dynamicznie, czy jest w kodzie i się po prostu ukazuje?
Go to the top of the page
+Quote Post
toaspzoo
post
Post #5





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Początkowo:
pusty div: widoczny, ze zdarzeniem onmouseover oraz onmouseout

Po najechaniu:

[/b]Do diva zostaje załadowany html ze strony poprzez $().load()

Gdy jestem myszką w divie to jest ok, lecz gdy najadę w nim na tekst (ten załadowany dynamicznie i nie tylko) reguje jakby onmouseout, mimo, że dalej jestem na nim.

Tworzę obrazki...

(IMG:http://znajomek.unixstorm.org/pomoc.png)
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


bo tak działa onmousover i out... chociaż dalej jesteś na danym elemencie gdyż tylko przechodzisz do bardziej zagłębionego to jednak projektanci uznali, że teraz jesteś dokładnie na innej warstwie... rozwiązanie jest już zaimplementowane w bibliotekach JS i nazywa się hover... jeśli chcesz to wykonać w czystym js to są 2 drogi

- poszukaj o implementacji hover w JS

- lub taka implementacja nie bezpośrednia - gdy wywołujesz tamtą funkcję przez setTimeout to ją wykonaj, ale miej gdzieś jeszcze na over ustawioną zmienną czy jesteś na elemencie czy nie, gdy schodzisz z niego to ustawiaj np. false... gdy Ci się wykona funkcja z timeouta z opóźnieniem (asynchronicznie) sprawdzisz wartość zmiennej i uruchomisz jej dalszą instrukcję lub przerwiesz... dodatkowo sobie ustaw jeszcze może czy jest otwarte dane okno... dla mouseout właśnie gdy kasujesz zmienną / ustawiasz na false to nie możesz od razu wykonać ukrywania dymka gdyż dalej możesz być w dużym divie, więc też ukrywanie wywołaj z malutkim timeoutem i tam sprawdź czy jest false tej zmiennej, jeśli tak to ukrywasz - w między czasie jeśli weszłeś na poziom niżej/wyżej funkcją pod mouseouver ustawisz tą zmienną na true...

nie wiem czy mnie zrozumiałeś... nie umiem za bardzo wytłumaczyć o co mi chodzi, dlatego choć czułem, że możesz mieć ten problem za nim o nim nie wspomniałeś nic nie pisałem...
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Kombinujecie, a na to jest tylko jedna prosta odpowiedź: event bubbling.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #8





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Tak, tylko jak to zastosowac ?
Mam polaczyc divy w jeden ? nie wiem

przepraszam, jestem na tux'ie wiec nie mam pl znakow chwilowo
Go to the top of the page
+Quote Post
zegarek84
post
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(erix @ 1.02.2012, 13:48:58 ) *
Kombinujecie, a na to jest tylko jedna prosta odpowiedź: event bubbling.

tia jasne - luknąłeś chociaż na problem?? założę się, że nie...

problemem tutaj jest, że akcja mouseout zostanie wykonana także, gdy przechodzisz do dziecka elementu na który masz podpięte to zdarzenie - stąd wziął się hover w jQuery...

z ukrywaniem i pokazywaniem elementów w zasadzie nikt nie zauważa problemu kto nie potrzebował takiego timeoutu (natychmiastowe ukrycie i od razu pokazanie elementu to tak jak by nic się nie działo) lub kto nie starał się zgłębiać języka...
Mouseenter and mouseleave (QuirksMode.org) - i wszystko co powyżej opisane (hover to połączenie mouseenter i mouseleave)
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
problemem tutaj jest, że akcja mouseout zostanie wykonana także, gdy przechodzisz do dziecka elementu na który masz podpięte to zdarzenie - stąd wziął się hover w jQuery..

No właśnie o to chodzi - jak podepniesz zdarzenie do większego elementu i aktywujesz bąbelkowanie, masz problem z głowy.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #11





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Fajnie - szkoda tylko, że nie wiem jak tego użyć ;p

A jeśli stworzę nową warstwę/element, to nie mogę z poziomu innego załadowanego pliku dzieki load(); zarządzać parentem
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




delegate()?
Go to the top of the page
+Quote Post
toaspzoo
post
Post #13





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


delegate, bąbelkowanie itp. Tylko jak tego użyć na moim przykładzie..
Go to the top of the page
+Quote Post

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: 26.09.2025 - 19:21