获取具有相同类的元素的id

Jax*_*mas 3 html javascript css jquery

我有多个div框,这个类printPic将有自己唯一的ID.在悬停时/外出时,切换显示printPicOverlay为其的子项printPic.我现在设置它的方式,printPicOverlay所有id都在悬停时切换.

printPicOverlay对于每个个人ID,在悬停时显示/隐藏的最佳方式是什么?

$(".printPic").hover(function () {
$(".printPicOverlay").toggle();
}, function () {
$(".printPicOverlay").toggle();
});
Run Code Online (Sandbox Code Playgroud)
.printPic{
  height: 10em;
  width: 10em;
  display: inline-block;
  background: red;
  position: relative;
}

.printPicOverlay{
  height: 100%;
  width: 100%;
  background: rgba(0,0,0,0.4);
  display: none;
  position: absolute;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "printPic" id = "1">
  <div class = "printPicOverlay"></div>
</div>

<div class = "printPic" id = "2">
  <div class = "printPicOverlay"></div>
</div>

<div class = "printPic" id = "3">
  <div class = "printPicOverlay"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

hel*_*elb 7

只是为了添加另一种选择 - 这在纯CSS中非常简单,没有任何Javascript/JQuery:

.printPic {
  height: 10em;
  width: 10em;
  display: inline-block;
  background: red;
  position: relative;
}

.printPicOverlay {
  height: 100%;
  width: 100%;
  background: rgba(0,0,0,0.4);
  display: none;
  position: absolute;
}

.printPic:hover .printPicOverlay {
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div class="printPic" id="1">
  <div class="printPicOverlay"></div>
</div>

<div class="printPic" id="2">
  <div class="printPicOverlay"></div>
</div>

<div class="printPic" id="3">
  <div class="printPicOverlay"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

它也可能更高效 - 使用本机浏览器功能而不是通过jquery查找元素.

关于:hover伪类的文档

如果你想为叠加外观设置动画,可以稍微调整一下(visibility而不是display等等):

.printPic {
  height: 10em;
  width: 10em;
  display: inline-block;
  background: red;
  position: relative;
}

.printPicOverlay {
  height: 100%;
  width: 100%;
  background: rgba(0,0,0,0.4);
  position: absolute;
  visibility: hidden;
  opacity: 0;
  transform: scale(0.8) translate(0, 10%);
  transition: visibility 0s, opacity 0.5s ease-in, transform 0.3s ease-in;
}

.printPic:hover .printPicOverlay {
  transform: scale(1);
  visibility: visible;
  opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="printPic" id="1">
  <div class="printPicOverlay"></div>
</div>

<div class="printPic" id="2">
  <div class="printPicOverlay"></div>
</div>

<div class="printPic" id="3">
  <div class="printPicOverlay"></div>
</div>
Run Code Online (Sandbox Code Playgroud)