2009-11-03 19 views
5

Chciałbym aktywować funkcję .mouseover tylko wtedy, gdy mysz kładzie się na elemencie "wyzwalającym" przez określony czas (na przykład 500 milisekund).jQuery aktywuj funkcję mouseover tylko wtedy, gdy mysz trzyma element

E.g.

$('.featured').mouseover(function() { 
     $('.feat-txt').fadeOut("fast"); 
    }); 

tylko jeśli mysz jest umieszczony nad elementem .featured na czas co najmniej 500 ms, funkcja może rozpocząć i .feat-TXT może FadeOut. Prosty kursor myszy (tylko szybki ruch) na tym elemencie nie aktywuje tej funkcji.

Wszelkie sugestie, jak to zrobić?

Odpowiedz

1

Czy to tak:

  • przechwytywać zdarzenia onmouseover na ten element. W funkcji wywołania zwrotnego nic nie rób; zamiast tego wywołaj inną funkcję z żądanym opóźnieniem, np. w prototypie robisz to za pomocą functionName.delay (500)

  • W drugiej funkcji sprawdź, czy mysz nadal znajduje się na elemencie, używając dowolnego jQuery, aby uzyskać współrzędne myszy i współrzędne elementu. Jeśli mysz nadal tam jest, rób co chcesz.

Nie będzie działać z dużymi opóźnieniami, ponieważ użytkownik może przesunąć mysz na zewnątrz i z powrotem wewnątrz elementu, a nazwa funkcji będzie nadal uruchamiana.

Jeśli nie masz nic przeciwko temu, żebym to powiedział, to bardzo zły pomysł.

+0

To dobra wskazówka, ale wydaje się trochę trudna. – Cybermac

+0

To naprawdę nie jest trudne, ale odpowiedź, która wskazuje na "celowanie", jest lepsza, ponieważ jest już zaimplementowana, jest podłączona do jQuery, z której już korzystasz i prawdopodobnie działa już lepiej niż rozwiązanie, które proponuję –

0

Właściwie znalazłem również tę wtyczkę jquery hover. http://blog.threedubmedia.com/2008/08/eventspecialhover.html

Nie korzysta z czasu oczekiwania myszy, ale wykorzystuje prędkość myszy w określonym przedziale czasu.

Wynik można zobaczyć na trzech polach wyświetlanych po prawej stronie tej strony: http://www.splendida.it (obecnie nad nim pracuję).

Wygląda miło. Kiedy mysz przeskakuje szybko z pierwszej do trzeciej skrzynki, nic się nie dzieje, nawet jeśli mysz przechodzi nad drugim elementem.