Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Zdarzenie po określonym czasie, z warunkiem utrzymania ciągłości
Adi32
post
Post #1





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Witajcie.

Nie mogłem znaleźć konkretnej odpowiedzi choć szukałem długo.

Od dawna zastanawia mnie jak zrobić coś takiego - najlepiej jak opiszę na przykładzie.

Kod
$('.costam').hover( function() {
    $('.popup').pokaz();
}, function {
    $('.popup').wywal();
} )


Jak widać po najechaniu na '.costam' costam sie pojawi. Jak zrobić, żeby popup pojawił się ale tylko w tedy jak kursor będzie wisiał nad 'costam' przez określoną ilość sekund? I żeby wcale się nie pokazywał jeżeli się rozmyśle i ucieknę kursorem?

Druga sprawa, użyłem tutaj funkcji pokaz() i wywal() które nie istnieją, jak pisać funkcje żeby można było je w ten sposób wywoływać na danych obiektach?
Normalnie bym zrobił:
Kod
$('.popup').css('display','block');
// lub
$('.popup').show();

...

Ten post edytował Adi32 21.09.2012, 11:07:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Arcioch
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


Polecam ten plugin (IMG:style_emoticons/default/wink.gif) hoverIntent Łatwy do ustawiania (IMG:style_emoticons/default/wink.gif) stosuje się go prawie tak samo ja zwykły hover w jQuery. Możesz również użyć funkcji delay() aby opóźnić wykonanie funkcji pokaz() (IMG:style_emoticons/default/wink.gif)

Odpowiedz na drugie pytanie (IMG:style_emoticons/default/wink.gif)

  1. jQuery(document).ready(function() {
  2.  
  3. $.fn.ukryj = function() {
  4. $('.popup').css({"display": "block"});
  5. };
  6.  
  7. });


Ten post edytował Arcioch 21.09.2012, 11:36:31
Go to the top of the page
+Quote Post
Adi32
post
Post #3





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Cytat(Arcioch @ 21.09.2012, 12:24:41 ) *
Polecam ten plugin (IMG:style_emoticons/default/wink.gif) hoverIntent Łatwy do ustawiania (IMG:style_emoticons/default/wink.gif) stosuje się go prawie tak samo ja zwykły hover w jQuery. Możesz również użyć funkcji delay() aby opóźnić wykonanie funkcji pokaz() (IMG:style_emoticons/default/wink.gif)

Odpowiedz na drugie pytanie (IMG:style_emoticons/default/wink.gif)

  1. jQuery(document).ready(function() {
  2.  
  3. $.fn.ukryj = function() {
  4. $('.popup').css({"display": "block"});
  5. };
  6.  
  7. });


Ad. 1:
Dzięki, skrypt na pewno się przyda, jednak i tak jestem ciekaw jak osiągnąć taki efekt przy pomocy samego jQuery.

Ad. 2:
Rozumiem, że po stworzeniu takiej funkcji, będę jej mógł używać na dowolnym obiekcie aby go ukryć|pokazać i inne takie?
edit: mała zmiana i działa jak chciałem - dzięki

Ten post edytował Adi32 21.09.2012, 11:44:42
Go to the top of the page
+Quote Post
Arcioch
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


ad1. Taki prosty przykład ze zmianą czasu po najechaniu myszką na div o id=box. Tło zmieni się tylko wtedy jeżeli myszka będzie znajdować się na elemencie dłużej niż czas określony przez funkcję setTimeout().

  1. <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
  2.  
  3. jQuery(document).ready(function() {
  4.  
  5.  
  6. var myTimeout;
  7. $('#box').mouseenter(function() {
  8. myTimeout = setTimeout(function() {
  9. $('#box').css({"background":"green"});
  10. }, 1000);
  11. }).mouseleave(function() {
  12. clearTimeout(myTimeout);
  13. });
  14.  
  15.  
  16.  
  17. });
  18.  
  19.  
  20. <div id="box" style="display: block; width: 100px; height: 400px; background: red;"></div>

Go to the top of the page
+Quote Post
Adi32
post
Post #5





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


O to chodziło. Coś mi się obiło z "clearTimeout(myTimeout);" a teraz wiem dokładnie. Dzięki.
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: 24.08.2025 - 14:34