Swiper 初始化不工作(无法读取未定义的 属性 'push')
Swiper initialization not working (Cannot read property 'push' of undefined)
我想做的事情真的很简单,或者我是这么想的。
Swiper.js API 记录了一个名为 init
的布尔参数,它允许禁用滑动器的自动初始化。
我想做的是像这样全局定义滑动器:
const carousel = new Swiper(".swiper-container" , {
freeMode: true,
slidesPerView: "auto",
init: false,
});
并在点击卡片时对其进行初始化,如下所示:
$(".card").click(function(){
carousel.init();
});
问题是浏览器抛出错误,脚本无法运行。这是错误:
Cannot read property 'push' of undefined
不知道是什么问题,因为Swiper API 明确指出,将init
参数设置为false后,可以调用carousel.init()
手动初始化
看来我可能已经解决了这个问题。似乎即使您全局声明了 swiper,swiper.js 也因为某些奇怪的原因无法访问它,所以我找到了一个解决方法。也许这是设计的方式,但至少对我来说,它没有什么意义。
首先,您需要在一个函数中声明您的刷卡器,如下所示:
function carouselProperties() {
return new Swiper(".swiper-container", {
init: false,
freeMode: true,
slidesPerView: "auto",
});
}
之后我们进入应该调用滑动器的函数内部,在本例中是点击事件侦听器。
$(".card").click(function(){
// Here we define a variable that returns the swiper
const carousel = carouselProperties()
// Afte we define this variable we can finally call the init function
carousel.init();
});
回顾一下:
- 您定义了一个函数,其中 returns 滑动器及其属性。
- 您在所有其他需要检索刷卡信息的函数中调用该函数。
我希望这对和我有同样问题的人有所帮助。
我想做的事情真的很简单,或者我是这么想的。
Swiper.js API 记录了一个名为 init
的布尔参数,它允许禁用滑动器的自动初始化。
我想做的是像这样全局定义滑动器:
const carousel = new Swiper(".swiper-container" , {
freeMode: true,
slidesPerView: "auto",
init: false,
});
并在点击卡片时对其进行初始化,如下所示:
$(".card").click(function(){
carousel.init();
});
问题是浏览器抛出错误,脚本无法运行。这是错误:
Cannot read property 'push' of undefined
不知道是什么问题,因为Swiper API 明确指出,将init
参数设置为false后,可以调用carousel.init()
手动初始化
看来我可能已经解决了这个问题。似乎即使您全局声明了 swiper,swiper.js 也因为某些奇怪的原因无法访问它,所以我找到了一个解决方法。也许这是设计的方式,但至少对我来说,它没有什么意义。
首先,您需要在一个函数中声明您的刷卡器,如下所示:
function carouselProperties() {
return new Swiper(".swiper-container", {
init: false,
freeMode: true,
slidesPerView: "auto",
});
}
之后我们进入应该调用滑动器的函数内部,在本例中是点击事件侦听器。
$(".card").click(function(){
// Here we define a variable that returns the swiper
const carousel = carouselProperties()
// Afte we define this variable we can finally call the init function
carousel.init();
});
回顾一下:
- 您定义了一个函数,其中 returns 滑动器及其属性。
- 您在所有其他需要检索刷卡信息的函数中调用该函数。
我希望这对和我有同样问题的人有所帮助。