当鼠标悬停在孩子动态创建的地方时,防止onmouseout

prevent onmouseout when mouseover child where child created dynamically

本文关键字:方时 防止 onmouseout 创建 悬停 鼠标 孩子 动态      更新时间:2023-09-26

我读过很多关于类似主题的帖子,所有这些都很好,我在阅读它们时学到了很多,但我仍然无法使我的代码令人满意地工作。

我有一个菜单栏,里面有很多按钮。当我将鼠标悬停在其中3个按钮上时,一些javascript会为每个按钮动态创建一个下拉菜单。

当我把鼠标从按钮上移开或完全从菜单栏上移开时,我会清除下拉菜单。

显然,当我将鼠标悬停在下拉列表上时,我不希望此下拉列表被清除。

当然,onmouseout事件会触发并清除此菜单。

我可以看到用于类似问题的各种方法。但这些都不起作用,我认为这是因为当监听器被分配给父对象时,div和dl创建的位置显然不存在。因此,尽管添加到dom的html将下拉列表放在侦听器的范围内,但它仍然假设发生了mouseout事件。

我试图通过为成功添加的动态内容添加侦听器来进行更正,但我仍然无法阻止mouseout在鼠标悬停之前触发。

设置一个计时器,并在生成的菜单上用鼠标清除它。

document.getElementById("menu").onmouseout = function(e){   
    window.to = setTimeout(function(){
        // remove the submenu
    },20)
}
document.getElementById("submenu").onmouseover = function(e){   
    clearInterval(window.to)
}