toggleClass() 对我不起作用

丹尼斯·伦德伯格

我正在尝试设置一个视频库,当我将鼠标悬停在视频缩略图上时,我希望我的播放按钮从 opacity: .3 更改为 opacity: 1。我试图通过使用 jQuery 脚本来实现这一点切换类()。我试过使用带有不透明度的 animate() ,这很有效。但我想改用 toggleClass() 方法。但是当我悬停时什么也没有发生。

//Fade in Play Button
$('.gallery-poster-play-button').hover(function() {
  $('.gallery-poster-play-button img').toggleClass('toggle-opacity-play-button');
});
.video-list {
  display: flex;
  justify-content: flex-start;
  list-style: none;
}

.video-list li {
  margin-right: 10px;
  transition: all .3s;
}

.video-list li:hover {
  transform: scale(0.98);
  cursor: pointer;
}

.video-list li img {
  border-radius: 4px;
}

.video-list li a {
  display: block;
  padding: 5px;
  text-decoration: none;
}

.play-button {
  position: relative;
}

.gallery-poster-play-button {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}

.gallery-poster-play-button img {
  position: absolute;
  left: 40%;
  top: 35%;
  vertical-align: middle;
  opacity: .3;
}

.toggle-opacity-play-button {
  opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
    <img src="../assets/videos/posters/video-poster-11.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
    <img src="../assets/videos/posters/video-poster-22.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
</ul>

罗里·麦克罗森

问题是,因为.toggle-opacity-play-button规则是不够具体,覆盖opacity从设置.gallery-poster-play-button img您需要增加特异性。您还需要使用$(this).find('img')仅影响当前元素的子元素,如下所示:

.gallery-poster-play-button img.toggle-opacity-play-button {
  opacity: 1;
}

//Fade in Play Button
$('.gallery-poster-play-button').hover(function() {
  $(this).find('img').toggleClass('toggle-opacity-play-button');
});
.video-list {
  display: flex;
  justify-content: flex-start;
  list-style: none;
}

.video-list li {
  margin-right: 10px;
  transition: all .3s;
}

.video-list li:hover {
  transform: scale(0.98);
  cursor: pointer;
}

.video-list li img {
  border-radius: 4px;
}

.video-list li a {
  display: block;
  padding: 5px;
  text-decoration: none;
}

.play-button {
  position: relative;
}

.gallery-poster-play-button {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}

.gallery-poster-play-button img {
  position: absolute;
  left: 40%;
  top: 35%;
  vertical-align: middle;
  opacity: .3;
}

.gallery-poster-play-button img.toggle-opacity-play-button {
  opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
    <img src="../assets/videos/posters/video-poster-11.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
    <img src="../assets/videos/posters/video-poster-22.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
</ul>

话虽如此,您根本不需要使用 JS,因为 CSS:hover伪选择器在这里可以正常工作:

.video-list {
  display: flex;
  justify-content: flex-start;
  list-style: none;
}

.video-list li {
  margin-right: 10px;
  transition: all .3s;
}

.video-list li:hover {
  transform: scale(0.98);
  cursor: pointer;
}

.video-list li img {
  border-radius: 4px;
}

.video-list li a {
  display: block;
  padding: 5px;
  text-decoration: none;
}

.play-button {
  position: relative;
}

.gallery-poster-play-button {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}

.gallery-poster-play-button img {
  position: absolute;
  left: 40%;
  top: 35%;
  vertical-align: middle;
  opacity: .3;
}

.gallery-poster-play-button:hover img {
  opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
    <img src="../assets/videos/posters/video-poster-11.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
  <li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
    <img src="../assets/videos/posters/video-poster-22.png" />
    <div class="gallery-poster-play-button">
      <img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
    </div>
  </li>
</ul>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的布局不起作用

来自分类Dev

菜单toggleClass打开不起作用

来自分类Dev

clearInterval对我不起作用

来自分类Dev

toggleClass用于执行两个不同的scrollTop方法,不起作用

来自分类Dev

toggleClass不起作用,但addClass起作用

来自分类Dev

用户生成的元素上的ToggleClass()不起作用

来自分类Dev

如何使用stopPropagation使toggleEvent对toggleClass起作用?

来自分类Dev

jQuery toggleClass,如果其他方法不起作用

来自分类Dev

jQuery toggleClass不起作用

来自分类Dev

FirebaseRecyclerAdapter对我不起作用

来自分类Dev

jQuery toggleClass-缓动不起作用

来自分类Dev

fnServerParams对我不起作用

来自分类Dev

Toggleclass不起作用,应该完全

来自分类Dev

JButton对我不起作用?

来自分类Dev

菜单toggleClass打开不起作用

来自分类Dev

超级链接上的toggleClass不起作用

来自分类Dev

setOnEditorActionListener对我不起作用

来自分类Dev

我的点击不起作用

来自分类Dev

@XmlElementWrapper对我不起作用

来自分类Dev

我如何使用jQuery UI执行AFTER toggleClass之后的功能

来自分类Dev

修改我的代码:当前使用toggle()和toggleClass()

来自分类Dev

jQuery为什么toggleClass在这里不起作用?

来自分类Dev

$(this).toggleClass不起作用

来自分类Dev

toggleClass()在第一次后不起作用

来自分类Dev

jQuery toggleClass起作用,单击时添加.text()替换会破坏它

来自分类Dev

jQuery toggleclass和单击不起作用

来自分类Dev

为什么此toggleClass()不起作用?

来自分类Dev

ToggleClass 和 RemoveClass 不起作用

来自分类Dev

为什么在这种情况下 toggleClass 不起作用?