javascript - jQuery/Javascript 动画按时间间隔改变 css 值

标签 javascript jquery

我在类名“image-part”下创建了几个 div 元素,并尝试使用此脚本为它们设置动画:

$(document).ready(function() {
  $('.image-part').each(function() {
    var id = setInterval(frame, 3000);

    function frame() {
      if ($(this).css("visibility") === "hidden") {
        $(this).css("visibility", "visible");
      } else {
        $(this).css("visibility", "hidden");
      }
    }
  });
});
.image-part {
  width: 33.33%;
  height: 60px;
  background-color: black;
  float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="image-part" style="visibility:hidden"></div>
<div class="image-part"></div>
<div class="image-part"></div>
<div class="image-part"></div>

没有任何事情发生,有人可以帮忙吗? 谢谢!

最佳答案

问题是因为 setInterval() 处理程序中 this 的范围不会是对任何 .image-part 的引用> 元素。

要解决此问题,您可以重新安排逻辑,以便在间隔内执行 each() 循环,如下所示:

$(document).ready(function() {
  setInterval(function() {
    $('.image-part').css('visibility', function(i, v) {
      return v == 'visible' ? 'hidden' : 'visible';
    });
  }, 3000);
});
.image-part {
  width: 33.33%;
  height: 60px;
  background-color: black;
  float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="image-part" style="visibility:hidden"></div>
<div class="image-part"></div>
<div class="image-part"></div>
<div class="image-part"></div>

请注意,我通过使用提供的函数对 css() 进行一次调用,将逻辑更改为更加简洁。不过,结果与您的初衷相同。

关于javascript - jQuery/Javascript 动画按时间间隔改变 css 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48109790/

相关文章:

php - 带有双引号的json解析错误

javascript - 如果 <td> 为空,如何使 <tr> 不可见?

javascript - 创建固定的 div 高度

javascript - 在 Metro 应用程序中将 iframe 与远程网站嵌入的正确方法

Javascript、Rails View 、content_for 和 DRYness

javascript - jQuery load() 错误

javascript - 向 Google 日历 API 发出 GET 请求

javascript - jQuery 第二个 child

javascript - 为什么这段代码不能专注于所需的 div?

javascript - 如何在 javascript 中将值传递给托管 bean 属性而不使用 JSF 中的隐藏标记?