我在谷歌上找不到解决方案,但我认为这应该是一个很常见的问题。我有一个div,我已经给它应用了一个onmouseout事件处理程序(该处理程序用于使用jquery的“slideup”函数卷起菜单,因为我希望鼠标离开时隐藏菜单)。问题是该div的子元素也会引发处理程序(我接受这是由于冒泡事件模型的本质所致)。现在我想知道的是忽略这些由div的子元素触发的事件,并仅在鼠标离开应用事件的div时卷起菜单的最佳方法是什么。
谢谢
谢谢
document.getElementById('Main_Menu_Container_Div').addEventListener('mouseenter',function(){
// do something like your 'slideup' or what ever you want.
});
<style>
.Child_Div_Button{
float:left;
cursor:pointer;
height:100px;
width:100px;
background-color:#CCC;
border:#000 thin solid;
margin:2px;
padding:2px;
}
.Child_Div_Button:hover{
background-color:#FFF;
}
</style>
</head>
<body>
<div id="Parent_Div_Container" style="height:300px; width:300px; border:#333 thin solid; background-color:#D2FFFF;">
Parent Div
<div id="button_container">
<div class="Child_Div_Button">
Button 1 Child Div
</div>
<div class="Child_Div_Button">
Button 2 Child Div
</div>
</div>
</div>
<script type="text/javascript">
document.getElementById('button_container').style.display = 'none';// initiate
document.getElementById('Parent_Div_Container').addEventListener('mouseenter',function(){
document.getElementById('button_container').style.display = 'block';
});
document.getElementById('Parent_Div_Container').addEventListener('mouseleave',function(){
document.getElementById('button_container').style.display = 'none';
});
</script>
最新版本的Firefox似乎可以在不需要JQUERY的情况下工作 - 但是Chrome、IE和Safari都需要jquery库才能使其正常工作。这是否意味着Mozilla现在完全支持使用mouseenter和mouseleave事件了?如果是这样的话,那么太好了!这是一个真正为开发人员提供帮助的浏览器 :)
Simon,你可以使用jQuery的Event.target属性来检查触发事件的人。