对于这个JSfiddle,我们希望当鼠标从粉红色的innerDiv下方进入并且没有进入绿色的outerDiv而离开时,不触发绿色的outerDiv的mouseenter事件。
Chrome 和 Opera 会出现预期的行为,但 Ffox 不会。
下面遵循每个浏览器的 jsfiddle 代码的控制台输出。
Chrome/Opera 输出(正确):
pink innerDiv mouseenter
pink innerDiv mouseleave
福克斯输出:
pink innerDiv mouseenter
pink innerDiv mouseleave
left pink innerDiv but through green outerDiv
green outerDiv mouseenter
知道 Ffox 行为不端的原因以及如何对其进行编码以使 Ffox 正确处理吗?
JSFiddle 代码:
HTML:
<div class="outerDiv">
Outer div text
<div class="innerDiv">
Inner div text
</div>
</div>
CSS:
div.outerDiv {
position: relative;
height: 110px;
cursor: auto;
padding-top: 0;
background-color: #00A300 !important;
box-shadow: 0 0 1px #FFFFCC inset;
color: #FFFFFF;
display: block;
float: left;
font-family: 'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;
font-size: 11pt;
font-weight: 300;
letter-spacing: 0.02em;
line-height: 20px;
margin: 0 10px 10px 0;
overflow: hidden;
text-decoration: none;
width: 150px;
}
div.innerDiv{ position:absolute;
width: 100%;
bottom: 0;
background-color: magenta;
}
Javascript:
$('div.outerDiv').on('mouseenter', function(){ console.log('green outerDiv mouseenter'); });
$('div.outerDiv').on('mouseleave', function(){ console.log('green outerDiv mouseeleave'); });
$('div.innerDiv').on('mouseenter', function(){ console.log('pink innerDiv mouseenter'); return false; });
$('div.innerDiv').on('mouseleave', function(){
console.log('pink innerDiv mouseleave');
if($('div.outerDiv').is(':hover')){
console.log('left pink innerDiv but through green outerDiv');
$('div.outerDiv').trigger('mouseenter');
}
return false;
});
</p>