javascript - 需要在悬停另一个 div 时向 div 添加类

标签 javascript jquery

我有一个具有相同类的 div 列表。每个 div 包含其他 div,.header.body.footer。当我将鼠标悬停在一个 div 内的某个元素上时,例如 .header,我需要在同一 div 内的另一个 .footer 元素上添加/删除一个类。

问题是当我悬停一个 .header - 我正在向所有其他 div 内的所有 .footer 元素添加类,但我只需要添加新类到当前 div 中的 .footer

$(document).ready(function() {
  $('.header').hover(function() {
    $('.footer').addClass('active');
  }, function() {
    $('.footer').removeClass('active');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list">
  <div class="list_item">
    <div class="header"></div>
    <div class="body"></div>
    <div class="footer"></div>
  </div>
  <div class="list_item">
    <div class="header"></div>
    <div class="body"></div>
    <div class="footer"></div>
  </div>
  <div class="list_item">
    <div class="header"></div>
    <div class="body"></div>
    <div class="footer"></div>
  </div>
</div>

最佳答案

您可以在 CSS 中使用 :hover 伪元素和通用的兄弟组合器选择器 ~

.list_item:hover .header:hover ~ .footer {
  background: red;
}
<div class="list">

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

</div>

否则,如果您不能依赖 .footer 作为下一个同级 - 使用 jQuery

jQuery(function($) {

  $('.header').hover(function() {
    $(this).closest('.list_item').find('.footer').toggleClass('active');
  });
    
});
.active {
  background: red;
}
<div class="list">

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

  <div class="list_item">
    <div class="header">Hover me</div>
    <div class="body">B</div>
    <div class="footer">F</div>
  </div>

</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

关于javascript - 需要在悬停另一个 div 时向 div 添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006505/

相关文章:

php - PHP\MySQL 查询中的 JavaScript

javascript - 从 iframe 显示弹出窗口并调暗背景,包括父页面

javascript - 使用 php 脚本创建的 AJAX 返回文件

javascript - 拉斐尔js : text elements drag & drop in the wrong direction

javascript - 为什么 slider 不会在悬停时停止

javascript - $(this).attr ('id' ) 仅适用于实际元素

javascript - 使用 div 的两种方式数据绑定(bind)

javascript - Vue.js mixin 在组件中无法正常工作

javascript - 正则表达式抓取太多文本

javascript - D3 气泡图切换按钮