如上所述,我有一个按钮,单击该按钮将打开子菜单。对于子菜单中的每个选项,有三个元素(实际上我想的更多,但为了简单起见,它将保持为3)。我将焦点放在子菜单的主div(白色'框架')上。这个div的Onblur - 然后我隐藏了子菜单。
这一切都按预期运行 - 但我有一个探测器,当单击特定选项的3个元素之一(即给定焦点)时,主div将因为它的onblur事件处理程序而关闭 - 以及PopUp函数
,不会触发链接到子菜单中选项元素的onClick事件。如果没有点击选项,我只需要以这种方式处理主div的onblur事件。
我明显使用JQuery,所以我很乐意与之合作解决问题。
答案 0 :(得分:3)
我将发布这个答案 - 希望有人可以改进或提出替代方案,因为它确实感觉像是一种解决方法。
但是,我所做的是关于onblur事件 - 而不是立即隐藏div,我使用超时进行了一小段延迟,因此我不会改变onblur / onclick事件的优先级但是实际上让onclick“有机会”开火。
答案 1 :(得分:2)
您可以尝试以下想法: (未经测试,因此需要进行一些调整/调试..)
function mouseOverSubMenu(mouseX, mouseY) {
var divTop = $('.sub_menu').offset().top;
var divLeft = $('.sub_menu').offset().left;
var divRight = divLeft + $('.sub_menu').width();
var divBottom = divTop + $('.sub_menu').height();
return (mouseX >= divLeft &&
mouseX < divRight &&
mouseY >= divTop &&
mouseY < divBottom);
}
$('.sub_menu, .other_elements').hover(
function(e) {
if (mouseOverStartButton(e.pageX, e.pageY)) {
// show menu
}
},
function(e) {
if (!mouseOverStartButton(e.pageX, e.pageY)) {
//hide menu
}
}
);