s.h*_*off 5 javascript jquery delegates hover
我有以下脚本始终两次触发mouseover和mouseout!你有什么建议我做错了(unbind,return eg)?我尝试了一些东西,但没有任何帮助.
这是代码:
$('#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;
});
Run Code Online (Sandbox Code Playgroud)
mouseover和mouseout一个触发,当你进入/离开元素的孩子,也许这就是你所看到的效果.
另一个问题是您将处理程序绑定到两者mouseover 和 mouseenter(mouseleave和mouseout).
只绑定mouseenter和mouseleave.jQuery已经在处理浏览器差异了.