私はmouseoverとmouseoutを常に2回発射する以下のスクリプトを持っています! 私は間違っていると示唆しています(アンバインド、返品など)?私はいくつかのことを試みたが、 何も助けなかった。ここjquery delegate()イベント(mouseover mouseout)が2回発生します
コードです:
$('#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;
});
これは、よく記述されていないイベントの問題です...言及してくれてありがとう。これを見つけるのに本当に長い時間がかかりました。私の状況では、あなたが提案する動作(mouseoverとmouseoutは、子ノードに入る/離れるときに再び発射する)はIE <10で発生しているに過ぎません。すべての現代のブラウザは、私が提供された要素すべての子どものためではありません。 stopPropagation/stopImmediatePropagationはこれに影響しませんでした。 – 1nfiniti