我正试图在鼠标悬停时为div添加叠加层。虽然它有效,但是当我在div中移动鼠标时,叠加层会一直闪烁。 我该如何防止这种情况?
HTML:
<div id="d4" class="dmc_block" style="width:60%; background:#eee; z-index:1">
<div style="padding:20px;">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. </p>
</div>
</div>
JS:
$('body').on('mouseenter','.dmc_block',function(){
var o = $(this).offset();
var h = $(this).height();
var w = $(this).width();
$('<div>').addClass('hover').css({width:w,height:h,left:o.left,top:o.top,position:'absolute',zIndex:2}).insertAfter(this);
}).on('mouseleave','.dmc_block',function(){
$('.hover').remove();
});
$('body').on('mouseenter','.hover',function(){return false;});
答案 0 :(得分:4)
改变这个:
.on('mouseleave','.dmc_block',function(){
对此:
.on('mouseleave','.hover',function(){
当重叠.hover
位于.dmc_block
之上时,它会触发mouseleave
的{{1}},因为它现在低于.dmc_block
。你想要的是.hover
的{{1}}。