Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] 2 sekundowy mouseover
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
toaspzoo
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 smile.gif


Pozdrawiam
erix
setTimeout na onmouseover i clearTimeout na onmouseout.

Dalej sobie poradzisz. [;
toaspzoo
Dzieki smile.gif

Niby takie proste, takie oczywiste a człowiek od razu nie wpadnie 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.
prowseed
Cytat(toaspzoo @ 1.02.2012, 10:31:49 ) *
Niby takie proste, takie oczywiste a człowiek od razu nie wpadnie 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?
toaspzoo
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...

zegarek84
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...
erix
Kombinujecie, a na to jest tylko jedna prosta odpowiedź: event bubbling.
toaspzoo
Tak, tylko jak to zastosowac ?
Mam polaczyc divy w jeden ? nie wiem

przepraszam, jestem na tux'ie wiec nie mam pl znakow chwilowo
zegarek84
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)
erix
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.
toaspzoo
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
erix
delegate()?
toaspzoo
delegate, bąbelkowanie itp. Tylko jak tego użyć na moim przykładzie..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.