用于移动问题的 Swiper 初始化脚本

Swiper init script for mobile issue

我正在为一个项目使用 Swiper 6.4.10。这是我第一次使用 Swiper。 该网站的一页上有多个滑块。所以我决定创建一些初始化脚本。我正在使用数据属性来创建滑块设置。每个滑块都有不同的设置。其中一项设置是 运行 仅在移动设备上使用滑块并在台式机或平板电脑上将其销毁。

我在这里和 Google 中阅读了很多帖子,但我就是无法正常工作。

关于这部分:

if(container){
  var initID = '#' + container;
  if(mobile){
   if(mobile_breakpoint.matches){
     var init = new Swiper(this, settings)
   } else if (!mobile_breakpoint.matches){
     var init = this.swiper.destroy();
   }
  }
  //var init = new Swiper(initID, settings)
}

当我在上面使用此代码时,所有轮播都被销毁,或者我收到一条错误消息,指出 this.swiper.destroyundefined。 当我 运行 我的代码是这样的:

if(container){
  var initID = '#' + container;
  var init = new Swiper(initID, settings)
}

然后所有轮播都正常工作。当我检查数据属性 mobile 并尝试破坏轮播时,所有轮播都停止工作。我显然漏掉了什么。

有人知道我做错了什么吗?非常感谢任何帮助!

else if 下的“你的错误”你忘了先初始化 swiper instance

这就是为什么当您取消注释此代码块时 - 页面已损坏(错误:this.swiper.destroy is undefined)。

销毁一个实例,您首先应该创建这个实例(destroy() is a Method of swiper instance)。

const swiper = new Swiper('.swiper-container', {});
swiper.destroy();

否则你的代码就像这样写:

bla_bla.destroy(); /* Uncaught ReferenceError: bla_bla is not defined */
  1. 创建实例(您的代码中缺少)
  2. 摧毁
else if (!mobile_breakpoint.matches){
   var init = new Swiper(this, settings) /* missing in your code */
   init = this.swiper.destroy();
}

总的来说-你的代码很长==>下次create a Minimal, Reproducible Example(很多代码与你的issue/error无关)。