Sto creando un sito in cui si passa il mouse sopra un'immagine e si mostra un elemento (in questo caso espandendo la sua altezza da 0 a 154 pixel).Trigger mouseover e mouseleave ogni volta che muovo il mouse all'interno dell'elemento specificato
jQuery(document).ready(function(){
jQuery("#dropdown-menu-create .dropimage").mouseover(function(){
jQuery("#dropdown-menu-create .toggle").animate({height:"154px"},200);
});
jQuery("#dropdown-menu-create .dropimage").mouseout(function(){
jQuery("#dropdown-menu-create .toggle").animate({height:"0"},200);
});
});
Il contenuto espande quando il mouse entra e collassa quando le foglie di topo, ma ogni volta che il mouse viene spostato all'interno dell'elemento contenuto espande e si comprime ripetutamente fino a quando il mouse esce l'elemento.
Non ho mai avuto questo problema prima, e ho usato queste funzioni in passato, quindi non ho idea di cosa sta succedendo. Qualche idea?
Edit:
jQuery(document).ready(function(){
jQuery("#dropdown-menu-create .dropimage").mouseenter(function(){
jQuery("#dropdown-menu-create .toggle").stop(true,true).animate({height:"154px"},200);
});
jQuery("#dropdown-menu-create .dropimage").mouseleave(function(){
jQuery("#dropdown-menu-create .toggle").stop(true,true).animate({height:"0"},200);
});
});
ora sto usando il codice di cui sopra e ancora ottenere lo stesso problema esatto. Ho provato tutte le varianti della funzione .stop (false, false) (false, true) (true, false) (true, true). Il problema si verifica in modo diverso con ciascuno, ma si verifica ancora.
ULTIMATE EDIT:
Il problema era che il contenuto che il mouse è andato oltre è stato coperto da un contenuto diverso una volta che la funzione è stata chiamata. Pertanto, in qualsiasi momento il mouse entrava e usciva contemporaneamente dall'immagine. Risolto il problema spostando la chiamata di funzione su un elemento diverso.
Questo accade perché la '' mouseout' e eventi mouseover' bolla fino a genitore, in modo che quando si passa sopra un elemento figlio di '.dropimage', il suo' 'mouseout' e eventi mouseover' bolla fino a' .dropimage'. L'uso di 'mouseleave' e' mouseenter' invece risolverà il problema. Una volta risolto il problema, scoprirai che devi chiamare '.stop (true, true)' prima di '.animate() 'per interrompere le animazioni precedenti nell'evento in cui si passa con il mouse sopra e fuori più volte rapidamente. –
Ho aggiornato il codice, ma il problema persiste ancora. – bcloutier
forse associare l'evento all'immagine e all'elemento? invece di solo l'immagine? – Mouseroot