2013-07-20 39 views
0

我有一个IMG(位置:绝对)和一个文本覆盖它(位置:绝对)的div。 img有一个图像映射表,问题是当我想要在悬停和离开该区域时更改img-opacity时,当我将div悬停在图像上时它会调用mouseleave。有没有简单而优雅的解决方案来解决这个问题?jQuery的 - 区域鼠标悬停不应该在那里时,悬停div(内)img(用usemap)

编辑:我想我解决了它与CSS:我给了'指针事件:无'的图像的股利。

+0

我认为这是没有必要的......因为这是合乎逻辑的图像的悬停停止时一个div结束它(和“超过”图像地区)...但我认为有一些技巧:) –

+0

指针事件css属性不支持IE – chrisweb

+0

是的,这是一个问题......嗯,我不知道什么否则可以如此聪明:) –

回答

1

,你可以使用嵌套的条件:

如果(鼠标越过图像)

{ 如果(鼠标移动到该图像||如果鼠标在DIV)

{ 

    do the job; 

} 

}

1

你可以复制的代码,你可能用的图像,并将其应用到div

可以说在img的mouseenter上设置opcaity为一个值,然后在div的mouseenter上做同样的事情,当div的mouseenter改变图像的opcity时,同样复制mouseleave的代码,以便opcaity被重新设置,如果用户离开或者股利或图像:

我犯了一个小提琴:http://jsfiddle.net/KpVag/1/

http://jsfiddle.net/KpVag/

$('img').on('mouseenter', function() { 
    $(this).css('opacity', '0.4'); 
}); 

$('img').on('mouseleave', function() { 
    $(this).css('opacity', '1'); 
}); 

$('div').on('mouseenter', function() { 
    $('img').css('opacity', '0.4'); 
}); 

$('div').on('mouseleave', function() { 
    $('img').css('opacity', '1'); 
}); 

[编辑] 看到您的评论我做了一个更新的小提琴后

我现在用sto p停止淡出动画,所以如果鼠标离开图像,我们开始动画,但是如果下一个事件是鼠标在我们的div上,那么我们取消淡出动画的图像,如果鼠标后没有鼠标在DIV那么动画没有被取消:

$('img').on('mouseenter', function (event) { 
    console.log('wrapper mouseenter'); 
    $(this).stop().fadeOut('slow', function() { 
     // on animation finish 
    }); 
}); 

$('img').on('mouseleave', function (event) { 
    console.log('wrapper mouseleave'); 
    $(this).fadeIn('slow', function() { 
     // on animation finish 
    }); 
}); 

$('div').on('mouseenter', function (event) { 
    console.log('wrapper mouseleave'); 
    // stop the image fadein animation 
    $('img').stop(); 
}); 

[/编辑]

+0

T为此,但还有下一个问题:当鼠标离开区域时,我想fadeOut()div ...因此,当我将鼠标悬停在div上时,它将达到fadeOut(),并且区域再次被识别,因为这个... –

+0

我对小提琴进行了更新,这是你的意思吗? http://jsfiddle.net/KpVag/1/ – chrisweb

+0

但是当你快速徘徊时,这是一个问题。那看起来不对。没有代码的 –