为什么元素叠加闪烁?

时间:2012-10-15 18:50:33

标签: javascript jquery

我正试图在鼠标悬停时为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;});

小提琴:http://jsfiddle.net/T9Lhw/

1 个答案:

答案 0 :(得分:4)

改变这个:

.on('mouseleave','.dmc_block',function(){

对此:

.on('mouseleave','.hover',function(){

Fiddle

当重叠.hover位于.dmc_block之上时,它会触发mouseleave的{​​{1}},因为它现在低于.dmc_block。你想要的是.hover的{​​{1}}。