html - jQuery 仅选择悬停元素,具有相同的类

标签 html jquery css

我正在创建简单的 jQuery 元素,但我遇到了麻烦,我不知道如何解决这个问题。我创建了三个框,然后将鼠标悬停在这些框周围,我希望显示框文本,是的,它正在工作,但我只想显示悬停的框文本(mousseentered),现在它会显示所有框文本,例如,如果我将鼠标悬停在第一个框上,我只想显示第一个框文本,所有框都有相同的类名,这是必需的

$('.three_box_inner').mouseenter(function(){
  $('.text').css({
    'display':'block',
  })

})
.three_box{
display:flex;

}

.three_box_inner{
  height:200px;
  width:200px;
  background-color:red;
  margin-left:20px;
}
.text {
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div class='three_box'>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
    </div>
      <div class='three_box_inner'>
        <div class='text'>
      text
    </div>
    </div>
      <div class='three_box_inner'>
        <div class='text'>
      text
    </div>
    </div>
  <div>

最佳答案

完全不需要JS。您所需要的只是 CSS 和 :hover伪选择器。

.three_box_inner:hover .text {
  display: block;
}

示例:

.three_box {
  display: flex;
}

.three_box_inner {
  height: 200px;
  width: 200px;
  background-color: red;
  margin-left: 20px;
}

.text {
  background: gold;
  opacity: 0;
  transition: 0.3s;
}

.three_box_inner:hover .text {
  opacity: 1;
}
<div class='three_box'>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
</div>

如果你确实想保留可见状态:
请注意 CSS 几乎保持不变,只是代替了 :hover您可以使用 .is-hover并使用 jQuery 的 .removeClass() 更改父元素上的这些类和.addClass()

const $box = $(".three_box_inner");

$box.on("mouseenter", function() {
  $box.not(this).removeClass("is-hover");
  $(this).addClass("is-hover");
});
.three_box {
  display: flex;
}

.three_box_inner {
  height: 200px;
  width: 200px;
  background-color: red;
  margin-left: 20px;
}

.text {
  background: gold;
  opacity: 0;
  transition: 0.3s;
}

.three_box_inner.is-hover .text {
  opacity: 1;
}
<div class='three_box'>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
  <div class='three_box_inner'>
    <div class='text'>
      text
    </div>
  </div>
</div>

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

关于html - jQuery 仅选择悬停元素,具有相同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63678054/

相关文章:

html - 具有动态高度的固定导航栏后的容器

jquery - 信息栏是如何工作的,就像您赢得徽章时出现在 stackoverflow 中的那个?

html - SVG 背景图像不在中心旋转

javascript - 在 HTML 中的特定表格单元格中显示消息对话框

javascript - 可点击元素应该隐藏/显示相关的轮播

javascript - 如何在同一屏幕(弹出窗口)中获取 facebook 对话框?

jQuery 移动 : Using 'data-rel="back"' with dynamic page generation

javascript - JavaScript Promises 解决了哪些编程障碍?或者说它们到底是什么?

css - 如何阻止流体网格元素的高度破坏布局

html - 为什么 Html Fieldset Legend 在 Safari 浏览器或 Ionic 应用程序中无法正确显示在 iPhone 中运行?