2010-11-18 12 views
7

Ho il seguente codice che attiva la visibilità di un div quando viene diviso un altro div. Funziona bene, tranne se si mouse sopra e fuori più volte si mette in coda tutti i comandi:jQuery attiva il passaggio del mouse - impedisce la coda

$(document).ready(function() { 
    $('.trigger').mouseover(function(){ 
     $('.info').toggle(400); 
    }).mouseout(function(){ 
     $('.info').toggle(400); 
    }); 
}); 

che ho provato questo, ma non sembra funzionare (crea problemi con la visibilità del toggled div e finisce per non mostrarlo affatto)

$(document).ready(function() { 
    $('.trigger').mouseover(function(){ 
     $('.info').stop().toggle(400); 
    }).mouseout(function(){ 
     $('.info').stop().toggle(400); 
    }); 
}); 

Come faccio a liberarmi della coda qui?

+0

davvero dovrebbe memorizzare nella cache il selettore '.info'. – Stephen

+0

Se stai per caching del selettore Stephen, puoi anche memorizzare tutta la riga ... sfortunatamente questo non aiuta Dan con la sua domanda comunque. Alcune persone semplificano il loro codice per consentire ad altri di rispondere al problema in questione. Sono anche d'accordo con John-Dan dovrebbe accettare diventare un partecipante non un utente – Blowsie

+0

Hai accettato solo 1 di 7 domande, fai clic sulle mie domande, quindi accetta la risposta scelta per ogni domanda – Blowsie

risposta

13

Utilizzando la funzione .dequeue() e .Stop()

.dequeue().stop() 

eccellente articolo su questo trovato qui, sono sicuro che quello che vuoi sapere dice.

http://css-tricks.com/examples/jQueryStop/

Inoltre vorrei usare. show() and .hide() invece di .toggle() solo per salvare jquery ogni confusione.

Modifica: Aggiornato

Il problema è la finitura isnt di animazione, utilizzando vero, vero salta alla fine prima di iniziare un altro.

Example

$('.trigger').mouseover(function() { 
    $('.info').stop(true, true).show(400); 
}).mouseout(function() { 
    $('.info').stop(true, true).hide(400); 
}); 
+0

Grazie. Il codice ora è così: $(document).ready(function() { \t $('.trigger').mouseover(function(){ \t \t $('.info').dequeue().stop().show(400); \t }).mouseout(function(){ \t \t $('.info').dequeue().stop().hide(400); \t }); }); Ma ancora, questo funziona esattamente come nel mio secondo frammento nel post originale. sembra ancora in coda l'animazione ma diventa davvero confuso e non mostra nulla – Dan

+0

questo aggiornamento va bene per te, Dan? – Blowsie

+0

grazie Blowsie è utile per me – srini

0

Si dovrebbe provare questo

$(".trigger").hover(function() { $(".info").stop(true).toggle(400); });