Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mootools] zatrzymanie opóźnionego zdarzenia
cichy380
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.08.2008
Skąd: Pabianice

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


proszę o pomoc przy poniższym kodzie,

powoduje on wyświetlenie komunikatu (przykładowa akcja) po najechaniu na element (zdarzenie),
akcja wykonuje się z opóźnieniem 2sek
[JAVASCRIPT] pobierz, plaintext
  1. var fAkcja = function(){
  2. alert('wyświetlam komunikat!');
  3. }
  4.  
  5. $('idDivElement').addEvent('mouseenter', function(){ // akcja wywoływana po najechaniu kursorem na element o ID "idDivElement"
  6. fAkcja.delay(2000);
  7. })
[JAVASCRIPT] pobierz, plaintext

kod działa, ale... chciałbym aby akcją się nie wywoływała w przypadku gdy kursor opuści element przed upływem 2sek,
czyli chodzi o zatrzymanie / przerwanie akcji w momencie opuszczenia elementu przez kursor.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


addEvents + mouseenter, mouseleave + cancel
Go to the top of the page
+Quote Post
cichy380
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.08.2008
Skąd: Pabianice

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


Cytat(skowron-line @ 20.01.2011, 11:34:41 ) *
addEvents + mouseenter, mouseleave + cancel

nie działa

zwraca: fAkcja.cancel is not a function


zrobiłem tak:
[JAVASCRIPT] pobierz, plaintext
  1. var fAkcja = function(){
  2. alert('wyświetlam komunikat!');
  3. }
  4.  
  5. $('idDivElement').addEvent('mouseenter', function(){ // akcja wywoływana po najechaniu kursorem na element o ID "idDivElement"
  6. fAkcja.delay(2000);
  7. })
  8.  
  9. $('idDivElement').addEvent('mouseleave', function(){ // akcja wywoływana po zdjęciu kursora z elementu o ID "idDivElement"
  10. fAkcja.cancel();
  11. })
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A nie powinno być po prostu:
[JAVASCRIPT] pobierz, plaintext
  1. $('idDivElement').addEvent( 'mouseleave', $clear(fAkcja) );
[JAVASCRIPT] pobierz, plaintext

?
Nie używam i nigdy nie używałem MooTools. Użyłem google i dokumentacji (IMG:style_emoticons/default/winksmiley.jpg)
http://docs111.mootools.net/#$clear
Go to the top of the page
+Quote Post
cichy380
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.08.2008
Skąd: Pabianice

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


Cytat(thek @ 20.01.2011, 12:08:33 ) *
A nie powinno być po prostu:
[JAVASCRIPT] pobierz, plaintext
  1. $('idDivElement').addEvent( 'mouseleave', $clear(fAkcja) );
[JAVASCRIPT] pobierz, plaintext
?

nie zadziałało,


ale chyba sobie poradziłem,
zrobiłem:
[JAVASCRIPT] pobierz, plaintext
  1. var timer;
  2.  
  3. var fAkcja = function(){
  4. alert('wyświetlam komunikat!');
  5. }
  6.  
  7. $('idDivElement').addEvent('mouseenter', function(){ // akcja wywoływana po najechaniu kursorem na element o ID "idDivElement"
  8. $clear(timer)
  9. timer = fAkcja.delay(2000);
  10. })
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Swoją drogą patrząc na same docs to widzę, że można by to skrócić do
[JAVASCRIPT] pobierz, plaintext
  1. var fAkcja = function(){ alert('wyświetlam komunikat!') }.delay(2000);
  2. $('idDivElement').addEvent('mouseenter', fAkcja);
  3. $('idDivElement').addEvent('mouseleave', $clear(fAkcja) );
[JAVASCRIPT] pobierz, plaintext
Od razu mówię... Z MooTools to mój pierwszy w życiu skrypt i to napisany tylko na podstawie dokumentacji, bez uruchomienia i przetestowania gdziekolwiek (IMG:style_emoticons/default/biggrin.gif)

EDIT:

Twój nie działa gdy wyjdziesz i poczekasz, bo brak mouseleave zdefiniowanego. Weź to co poniżej. Właśnie sobie skrypt przetestowałem...
[JAVASCRIPT] pobierz, plaintext
  1. var timer;
  2. var fAkcja = function(){ alert('wyświetlam komunikat!') };
  3. $('idDivElement').addEvent('mouseenter', function() { timer = fAkcja.delay(2000) });
  4. $('idDivElement').addEvent('mouseleave', function() { $clear(timer) } );
[JAVASCRIPT] pobierz, plaintext
Powód edycji: [thek]: Poprawiony, na bank działający
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: 25.08.2025 - 14:36