让我的图像我有一个附加到图像的事件处理函数,例如,onmouseover处理程序。如果特定元素触发onmouseover事件,我不希望运行此处理程序。
更具体地说,我有一个悬停的图像,弹出一个菜单。如果鼠标移出该图像,我想关闭该菜单,除非我将鼠标移动到与图像相邻的菜单。
伪代码
中有这样的东西img.mouseout = function () {
if (otherelement.onmouseover.fired) {
leave the menu as it is
}
else
{
close the menu
}
那么如何判断是否有其他事件被解雇?
答案 0 :(得分:0)
我会添加一个超时和一个鼠标悬停处理程序,在另一个处理程序中清除它。虽然元素可以在视觉上完全相邻,但添加一个小型计时器更安全,因为鼠标输出事件可能会触发一个微小的1px区域,从而导致丑陋的闪烁。
这也允许快速mouses而不闪烁。
类似的东西:
var timer;
img.onmouseout = other.onmouseout = function() {
timer = setTimeout(closemenu, 100);
}
img.onmouseover = other.onmouseover = function() {
clearTimeout(timer);
}
function closemenu() {
// close it
}