2010-11-18 20 views
7

Tengo el siguiente código que alterna la visibilidad de un div cuando se mueve otro div. Funciona bien, excepto si el cursor sobre y en repetidas ocasiones se pone en cola todos los alterna:jQuery alternar sobre el mouseover - evitar cola

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

que he probado esto, pero no parece funcionar (que crea problemas con la visibilidad de la toggled div y termina no mostrándolo en absoluto)

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

¿Cómo me deshago de la cola aquí?

+0

que realmente debe almacenar en caché el selector de '.info'. – Stephen

+0

Si vas a guardar en caché el selector Stephen, también puedes guardar en caché toda la línea ... desafortunadamente esto no ayuda a Dan con su pregunta de todos modos. Algunas personas simplifican su código para que otros respondan el problema en cuestión. También estoy de acuerdo con John- Dan debería aceptar convertirse en participante no usuario – Blowsie

+0

Solo ha aceptado 1 de 7 preguntas, haga clic en mis preguntas y luego acepte la respuesta que eligió para cada pregunta – Blowsie

Respuesta

13

Uso de la función .dequeue() y .Stop()

.dequeue().stop() 

excelente artículo sobre este encontrado aquí, estoy seguro de que lo que usted quiere saber dice.

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

También me gustaría utilizar. show() and .hide() en lugar de .toggle() solo para guardar jquery cualquier confusión.

Editar: Actualización

El problema es el acabado isnt animación, utilizando cierto, cierto que salta al final antes de iniciar otro.

Example

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

Gracias. El código ahora es así: $(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 }); }); Pero, nuevamente, esto solo funciona igual que en mi segundo fragmento en la publicación original. parece todavía poner en cola la animación pero se confunde y no muestra nada. – Dan

+0

esta actualización es buena para ti, Dan? – Blowsie

+0

gracias Blowsie me sirve – srini

0

Debe probar este

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