JavaScript - 防止鼠标悬停的孩子,当孩子创建动态的孩子
问题描述:
我已经阅读了类似主题上的贴子数量,所有这些都很出色,我学到了很多阅读它们,但是仍然无法令我的代码工作令人满意。JavaScript - 防止鼠标悬停的孩子,当孩子创建动态的孩子
我有一个菜单栏和一些按钮。当我将鼠标悬停在其中的某个JavaScript上时,会为每个按钮动态创建一个下拉菜单。
当我将鼠标移出按钮或完全离开菜单栏时,我清除了下拉菜单。
很显然,当我将鼠标悬停在下拉菜单上时,我不希望此下拉列表被清除。
但当然事件发生并清除这个菜单。
我可以看到用于类似问题的各种方法。但是,这些工作都没有奏效,我认为它是由于当听众被分配给父母时显然不存在的div和dl创建的结果。因此,虽然添加到dom中的html将下拉列表放在侦听器的范围内,但它仍假定发生了鼠标事件。
我试图通过添加成功添加动态内容的侦听器进行更正,但仍然无法防止mouseout在鼠标悬停前触发。
答
设置一个计时器,并在鼠标悬停在生成的菜单上清除它。
document.getElementById("menu").onmouseout = function(e){
window.to = setTimeout(function(){
// remove the submenu
},20)
}
document.getElementById("submenu").onmouseover = function(e){
clearInterval(window.to)
}
嗨伊万,现在我已经尝试应用setTimeout。我将它设置在mouseout外的主菜单按钮上,并设置了在清除菜单之前测试过的dropDownFocus标志。 – codepuppy 2012-01-14 07:17:32
应该是'window.to = window.setTimeout(...'。无论如何,这对我有效。 – tjb1982 2012-03-20 15:01:45