【问题标题】:Why mouseover is not detecting other div which is on another div in JQuery?为什么 mouseover 没有检测到 JQuery 中另一个 div 上的其他 div?
【发布时间】:2018-03-15 11:48:58
【问题描述】:

我正在添加鼠标悬停事件。根据我的 HTML 代码,myDiv 恰好出现在<img> 上。我在<img>myDiv 上都检测到鼠标悬停。
但是会发生什么,当我将鼠标悬停在<img> 上时它工作正常并且它检测到它悬停在图像上但是当我悬停在myDiv 上而不离开<img> 时,它没有检测到myDiv,它仍然在@987654331 @。如何在不离开 img 的情况下检测 myDiv。

下面是我的代码

我的 HTML 代码

<style>
 .myDiv{
     position:absolute;
  }
 .hoverEffect{
     border: 2px solid #0044ff;
     opacity: 0.5;
  }
</style>
<div class="myDiv">
    <h1>Heading</h1>
</div>
<img src="myimage.jpg">

JQuery 代码

$('body').mouseover(function(e) {
      //e.target For Detecting div or image
      $(e.target).addClass('hoverEffect');
});
$('body').mouseout(function(e) {
     $(e.target).removeClass('hoverEffect');
}

在下面的 GIF 图片中,您可以在上面的图片中看到“欢迎使用我们的应用程序”的内容。悬停在图像上后,它没有检测到这个有另一个 div 的内容。

在上面的 JQuery 代码中,我将类“hoverEffect”添加到悬停的div。唯一的问题是在hoverEffect 类中,那就是不透明度。当我使用 opacity 时,它没有检测到myDiv,但是当我从 css 代码中删除 opacity 时,它工作正常。

Working jsfiddle link(不使用不透明度)
Not Working jsfiddle link(使用不透明度)


我的问题是,为什么当我为类添加不透明度时它不起作用? 如果可以在不消除课堂不透明度的情况下做到这一点,那么该怎么做呢?

【问题讨论】:

  • 两者都适用
  • @NikhilGhuse 请尝试将鼠标悬停在两个 jsfiddle 上的“Hello World”上并检查两者的行为
  • 是的,我都检查了
  • 好的,现在我知道了,因为答案已经发布,你需要 chenge z-index

标签: javascript jquery css


【解决方案1】:

使用z-index,试试这样改css

.myDiv{
  position:absolute;
  z-index : 9;
}
.myDiv h4{
  z-index : 99;
}

工作小提琴:https://jsfiddle.net/w6ezx38a/3/

【讨论】:

  • 感谢您的解决方案。但我无法理解不透明度如何影响行为?我们可以通过js或者jquery代码来解决吗?因为我在 JQuery 代码中将 HTML 视为动态的,你可以说不改变 CSS / HTML,我们可以修复它吗?
  • 是的,您可以在 css 中创建类并通过 jquery 添加/删除
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2011-06-25
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多