tôi có kịch bản sau đây kích hoạt tính năng di chuột qua và di chuột luôn luôn hai lần! bạn đề nghị tôi làm gì sai (unbind, return e.g.)? tôi đã thử một vài điều nhưng không có gì hữu ích.sự kiện jquery delegate() (mouseout mouseout) kích hoạt hai lần
đây là mã:
$('#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;
});
Đây là vấn đề sự kiện kém tài liệu ... Cảm ơn bạn đã đề cập đến nó. Đã cho tôi một thời gian rất dài để tìm thấy điều này. Trong tình huống của tôi, hành vi bạn đề xuất (mouseover & mouseout bắn một lần nữa khi bạn nhập/rời các nút con) chỉ xuất hiện trong IE <10 - tất cả các trình duyệt hiện đại dường như hiểu rằng tôi chỉ quan tâm đến việc xử lý sự kiện cho phần tử được cung cấp và không phải cho tất cả các con của nó. Ngay cả stopPropagation/stopImmediatePropagation cũng không ảnh hưởng đến điều này đối với tôi. – 1nfiniti