javascript - 在鼠标进入时停止滑动滑动自动播放并在鼠标离开时开始自动播放

标签 javascript jquery swiper.js

如何在鼠标进入时停止滑动滑动自动播放并在鼠标离开时开始自动播放?我尝试了 .stopAutoplay().startAutoplay() 函数,但对我不起作用。

谢谢,这里是代码。我遇到控制台错误

Uncaught TypeError: swiper .startAutoplay is not a function

 var swiper = new Swiper('.swiper-container', {
    pagination: '.swiper-pagination',
    paginationClickable: true,
    nextButton: '.swiper-button-next',
    prevButton: '.swiper-button-prev',
    spaceBetween: 0,
    loop: true,
    effect: 'slide',
    longSwipes: true,
    autoplay:2000,
    autoplayDisableOnInteraction:true,
});


$(".swiper-container").mouseenter(function(){
    swiper.stopAutoplay();
});

$(".swiper-container").mouseleave(function(){
    swiper.startAutoplay();
});

最佳答案

您需要使用选项 disableOnInteraction: true 而不是自己绑定(bind)事件 请参阅此处的 documentation .

您可以选择使用以下内容进行自动播放开始停止

  • swiper.autoplay.start();

  • swiper.autoplay.stop();

编辑

您的错误在于您如何获取 swiper 的实例。看下面的演示

$(document).ready(function() {
  new Swiper('.swiper-container', {
    speed: 400,
    spaceBetween: 100,
    autoplay: true,
    disableOnInteraction: true,
  });
  var mySwiper = document.querySelector('.swiper-container').swiper

  $(".swiper-container").mouseenter(function() {
    mySwiper.autoplay.stop();
    console.log('slider stopped');
  });

  $(".swiper-container").mouseleave(function() {
    mySwiper.autoplay.start();
    console.log('slider started again');
  });
});
.swiper-slide {
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.5/js/swiper.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.5/css/swiper.css" rel="stylesheet" />
<!-- Slider main container -->
<div class="swiper-container">
  <!-- Additional required wrapper -->
  <div class="swiper-wrapper">
    <!-- Slides -->
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
    <div class="swiper-slide">Slide 4</div>
  </div>
  <!-- If we need pagination -->
  <div class="swiper-pagination"></div>

  <!-- If we need navigation buttons -->
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>

  <!-- If we need scrollbar -->
  <div class="swiper-scrollbar"></div>
</div>

关于javascript - 在鼠标进入时停止滑动滑动自动播放并在鼠标离开时开始自动播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47238245/

相关文章:

javascript - jQuery 用点击时的标签替换按钮下拉列表

JavaScript 回调函数在我的情况下不起作用

javascript - $.notify 不是 ajax 调用后 MVC 中 Bootstrap 的函数

javascript - Bootstrap 导航移动下拉自动展开

css - 如何在 Swiper Slider 中编辑 translate3d

javascript - Swiper 只加载第一页

css - 如何使用滑动 slider 在图像底部添加文本

javascript - 如何将 `appendPre` 放入表中?

javascript - React-Grid-Layout:如何在调整大小时重新渲染项目

c# - 如何在谷歌地图中使用 jquery 动态绑定(bind)多个标记