ho il seguente script sparando passaggio del mouse e mouseout sempre due volte! cosa suggerisci di fare male (unbind, return ad esempio)? ho provato un paio di cose, ma niente aiutato.jquery delegato() eventi (mouseover mouseout) spara due volte
ecco il codice:
$('#container').delegate('div.showmenu', 'mouseover mouseenter mouseout mouseleave', function(e){
if (e.type === 'mouseover' || e.type==='mouseenter') { //jIE requires mouseenter, does not fire mouseover
if($(this).parents().closest('div').hasClass('whatever')){
alert(e.type); //double-alerts mouseover
menu.show();
foldercmenu.hover(
function(){
$(this).show();
},
function(){
$(this).hide();
}
);
}else {
//do other stuff :-)
}
}else if(e.type==='mouseout' || e.type==='mouseleave'){ //IE requires mouseleave, does not fire mouseout
alert(e.type); //double-alerts mouseout
menu.hide();
$(this).unbind('mouseover mouseenter mouseout mouseleave');
}
//return false;
});
Questo è un problema evento scarsamente documentato ... Grazie per averlo menzionato. Mi ci è voluto davvero tanto tempo per trovarlo. Nella mia situazione, il comportamento che suggerisci (mouseover e mouseout che si attivano di nuovo quando entri/esci da nodi figlio) si verifica solo in IE <10 - tutti i browser moderni sembrano capire che sono interessato solo a gestire un evento per l'elemento fornito e non per tutti i suoi figli. Persino stopPropagation/stopImmediatePropagation non ha influenzato questo per me. – 1nfiniti