javascript - 悬停在另一个 div 上时触发悬停效果

标签 javascript jquery hover mousehover

目前,我正在学习如何用 javascript 和 jquery 编写。我编写了一个简单的 jquery 代码,当您悬停一个 div 时,第二个 div 也会悬停。但是,我写的代码不起作用。我的知识不足以纠正我自己所犯的错误,这就是为什么如果有人可以帮助我,我将非常感激。

PS:我知道这只能用 CSS 来完成,但我对此不感兴趣。

我的代码:

$('.Box1').mouseover(function(e) {
    $('.Box2').trigger(e.type);
})
body{
  margin:0;
  padding:0;
  background-color:green;
}

.Box1{
  position:relative;
  width:100vw;
  height:10vh;
  transition: background-color 1s ease;
}

.Box1:hover{
  background-color:#FFF;
}

.Box2{
  position:absolute;
  top:10vh;
  width:100vw;
  height:20vw;
  background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="Box1"></div>
<div class="Box2"></div>

最佳答案

您只需要“伪造”一个悬停事件即可。获取您附加到 .Box2:hover css 的任何代码并将其分配给一个类。当您将鼠标悬停在 .Box1 上时,将类添加到 .Box2 上,当您将鼠标悬停在 .Box1 上时,删除该类。代码如下所示:

<强> Working Demo

CSS

.Box2{
  position:absolute;
  top:10vh;
  width:100vw;
  height:20vw;
  background-color:red;
  transition: background-color 1s ease;
}

.Box2:hover, .Box2.hovered {
  background-color: #FFF;
}

jQuery

$(function () {
  $('.Box1').mouseover(function(e) {
    $('.Box2').addClass("hovered");
  });
  $(".Box1").mouseout(function () {
    $(".Box2").removeClass("hovered");
  });

  // or optionally using .hover() for in/out handling as per A. Wolff's comment
  $(".Box1").hover(function () {
    $(".Box2").addClass("hovered");
  }, function () {
    $(".Box2").removeClass("hovered");
  });
});

关于javascript - 悬停在另一个 div 上时触发悬停效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442901/

相关文章:

hover - CSS "absolutely"定位边框图像

javascript - 调用 http 函数时不会触发 XHR 请求

javascript - 为每个 Vue.JS 模板循环初始化 Canvas

javascript - 这是内存泄漏吗?

jquery - 鼠标悬停时在图像上显示信息

jquery - 通过悬停 ElementS 和 ElementS 更改元素

javascript - 切换、淡入、淡出。打开 slider 并更改内容

javascript - jQuery 动画没有做任何事情

javascript - Hammer.js 无法运行

JavaScript SlideUp/SlideDown 使我的页脚在滑动后跳动