我制作一个覆盖另一个div的透明div有一个小问题。当用户将鼠标悬停在原始div上时,我需要透明div显示在另一个div上。我设法让透明div显示在第一个上面,但是当鼠标离开时透明div保持结束。我很清楚为什么会发生这种情况,封面位于第一个div的顶部,如果鼠标离开原来的div,jquery就不能再检测到了,我试过这两个版本
$("#top_content").hover(function(){
$("#top_cover").css("opacity","0.35");
}, function(){
$("#top_cover").css("display","0");
});
$("#top_cover").hover(function(){
$("#top_cover").css("opacity","0.35");
}, function(){
$("#top_cover").css("display","0");
});
两者都可以添加封面,但不能删除封面。这是jsfidle http://jsfiddle.net/HjW53/
编辑我不能相信我是多么愚蠢,我开始使用display none / block然后转到opacity解决方案并忘记将显示更改为不透明度。感谢您的解决方案。答案 0 :(得分:2)
你在第二个陈述中宣布了一些错误。这是最简单的修复方法。只需重新设置opacity
值,而不是显示。
$("#top_content").hover(function(){
$("#top_cover").css("opacity","0.35");
}, function(){
$("#top_cover").css("opacity","0");
});
使用display:none
或0
的问题在于hidden
中的DOM
,因此您永远无法再hover
次第一场火灾。
答案 1 :(得分:2)
根本不需要编写脚本..
只需添加此css规则
#top_content:hover #top_cover{
opacity:0.35;
}
演示http://jsfiddle.net/gaby/HjW53/5/
代码上的实际错误并不是jquery无法检测到重叠
由于#top_cover
是#top_content
的子项,因此它始终会触发所有父项的悬停事件..(除opacity
之外不会影响悬停事件.. )所以如果它能够设置不透明度,它可以解决它..
问题在于"display","0"
它应该是"display","none"
(,但它只能在第一次工作)或在两种情况下使用相同的属性,因此"opacity","0"
答案 2 :(得分:-1)
$("#top_cover").css("display","0");
似乎不起作用,我将0
替换为none
,它就像一个魅力。
以下是更新版本:
$("#top_content").hover(function(){
$("#top_cover").css("opacity","0.35");
}, function(){
$("#top_cover").css("display","none");
});