javascript - 悬停时暂停 jQuery

标签 javascript jquery html css

我只希望能够在鼠标悬停时暂停动画。我试图寻找好的方法来做到这一点,但存在一些问题。我测试了一些悬停/停止功能,但无法使它们正常工作。

jQuery(document).ready(function() {
  setInterval(function() {
    jQuery('#testimonials .slide').filter(':visible').fadeOut(1000, function() {
      if (jQuery(this).next('.slide').size()) {
        jQuery(this).next().fadeIn(1000);
      } else {
        jQuery('#testimonials .slide').eq(0).fadeIn(1000);
      }
    });
  }, 5000);
});
#quote {
  width: 100%;
  height: 130px;
  background-position: center bottom;
  background-repeat: no-repeat;
  margin-bottom: 65px;
  overflow: hidden;
}

#testimonials .slide {
  color: #555555;
}

#testimonials .testimonial-quote {
  display: inline;
  width: 600px;
  height: 170px;
  margin: 0;
  padding: 0;
  float: left;
  position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="quote">
  <div id="testimonials">
    <div class="slide">
      <div class="testimonial-quote">
        <p>Text 1</p>
        <h4 class="title">Title 1</h4>
      </div>
    </div>
  </div>
</div>

最佳答案

您可以通过在幻灯片悬停时调用 clearInterval() 来实现此目的,然后在鼠标离开幻灯片时再次重新创建间隔,如下所示:

jQuery(document).ready(function($) {
  var $slides = $('#testimonials .slide');
  
  function beginSlideInterval() {
    return setInterval(function() {
      $slides.filter(':visible').fadeOut(1000, function() {
        var $next = $(this).next().length ? $(this).next() : $slides.first();
        $next.fadeIn(1000);
      });
    }, 3000);
  }
 
  var slideInterval = beginSlideInterval();
  
  $slides.on('mouseenter', function() {
    clearInterval(slideInterval);
  }).on('mouseleave', function() {
    slideInterval = beginSlideInterval();
  });
});
#quote {
  width: 100%;
  height: 130px;
  background-position: center bottom;
  background-repeat: no-repeat;
  margin-bottom: 65px;
  overflow: hidden;
}

#testimonials .slide {
  color: #555555;
}

#testimonials .testimonial-quote {
  display: inline;
  width: 600px;
  height: 170px;
  margin: 0;
  padding: 0;
  float: left;
  position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="quote">
  <div id="testimonials">
    <div class="slide">
      <div class="testimonial-quote">
        <p>Text 1</p>
        <h4 class="title">Title 1</h4>
      </div>
    </div>
  </div>
</div>

注意我缩短了间隔,让效果更明显。

关于javascript - 悬停时暂停 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609687/

相关文章:

javascript - 我如何选择当前的 li 元素 div 标签

javascript - 单击确定后如何停止 sweetalert 滚动到顶部?

javascript - 如何从一组数组中获取所有组合

javascript - lodash sortByOrder 未按预期工作?

javascript - 不显示数据集颜色 :overridden when categoryAxesSettings has minPeriod seconds

javascript - 使用纯 js 从 html 标签中解包选定的文本

javascript - 维基百科 3c 中的 Prims MST 没有意义

javascript - 为什么 JavaScript 不能对 [5, 10, 1] 进行排序?

jquery - 根据屏幕大小移动div

javascript - 将 fancybox-skin 设置为固定大小并将所有图像居中