可能重複:
Nested div weird mouseenter/mouseleave behaviorMousenter /鼠標離開導致Ffox行爲不檢
爲this JSfiddle,我們希望的是,當鼠標在粉紅色innerDiv下面進入和離開,而不進入綠色outerDiv,綠色outerDiv的mouseenter事件不會被觸發。
預期的行爲發生與Chrome和Opera,但不與Ffox。
下面遵循每個瀏覽器的jsfiddle代碼的控制檯輸出。
鉻/歌劇輸出(正確):
pink innerDiv mouseenter
pink innerDiv mouseleave
Ffox輸出:
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;
});
行爲......將需要重新考慮你的代碼。還沒有':hover'選擇 – charlietfl
這是後[「嵌套DIV怪異的mouseenter /鼠標離開的行爲」(http://stackoverflow.com/questions/14148820/nested-div-weird-mouseenter-mouseleave的改述 - 行爲),這本來是很糟糕的措詞。 –
@charlietfl即使我已經看到它,你是對的:沒有'.is(':hover')'選擇器。但是,爲什麼Chrome&Opera會正確解釋它,而Ffox卻沒有。替代結構的想法來克服這個問題? –