Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Zdarzenie po określonym czasie
Forum PHP.pl > Forum > Po stronie przeglądarki
Adi32
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();

...
Arcioch
Polecam ten plugin wink.gif hoverIntent Łatwy do ustawiania 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() wink.gif

Odpowiedz na drugie pytanie wink.gif

  1. jQuery(document).ready(function() {
  2.  
  3. $.fn.ukryj = function() {
  4. $('.popup').css({"display": "block"});
  5. };
  6.  
  7. });
Adi32
Cytat(Arcioch @ 21.09.2012, 12:24:41 ) *
Polecam ten plugin wink.gif hoverIntent Łatwy do ustawiania 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() wink.gif

Odpowiedz na drugie pytanie 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
Arcioch
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>

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