我在我的网站上使用iDangerous Swiper以较低的分辨率.这是我如何称呼它:
var resolution = 670;
if ($(window).width() < resolution) {
var mySwiper = $('.swiper-container').swiper({
mode:'horizontal',
loop: true,
grabCursor: true,
paginationClickable: true
});
Run Code Online (Sandbox Code Playgroud)
因此,当您在桌面浏览器中访问它时,将不会调用滑动器.我想要做的是"如果用户将窗口大小调整到小于resolution或者破坏它,如果用户以小窗口大小访问它,然后将其大小调整为大于",则"打开" resolution.我试过这个,但它不起作用:
$(window).resize(function(){
if ($(window).width() < resolution) {
if(typeof(mySwiper) === "undefined" ) {
var mySwiper = $('.swiper-container').swiper({
mode:'horizontal',
loop: true,
grabCursor: true,
paginationClickable: true
});
}
} else {
if (typeof(mySwiper) !== "undefined" ) {
mySwiper.destroy();
}
}
});
Run Code Online (Sandbox Code Playgroud)
发生两件令人不快的事
我的问题是我的问题typeof.我不太清楚变量如何在它们被调用时如何工作:$('.swiper-container').swiper().
如何"取消"swiper以及如果已经调用它怎么不调用?
小智 12
我的解决方案
var mySwiper = undefined;
function initSwiper() {
var screenWidth = $(window).width();
if(screenWidth < 992 && mySwiper == undefined) {
mySwiper = new Swiper('.swiper-container', {
spaceBetween: 0,
freeMode: true
});
} else if (screenWidth > 991 && mySwiper != undefined) {
mySwiper.destroy();
mySwiper = undefined;
jQuery('.swiper-wrapper').removeAttr('style');
jQuery('.swiper-slide').removeAttr('style');
}
}
//Swiper plugin initialization
initSwiper();
//Swiper plugin initialization on window resize
$(window).on('resize', function(){
initSwiper();
});
Run Code Online (Sandbox Code Playgroud)
而且它太棒了!:)
小智 2
我遇到了同样的问题,发现一旦宽度超出我的最大宽度, mySwiper 就会再次出现undefined,因此该if(typeof)语句总是返回false。
我找到了另一个带有fired[]下面数组的混合解决方案,并且还意识到,虽然该destroy()方法可能在我的示例中执行,但 swiper 本身已向包装器和幻灯片 DIV 添加了一个样式属性,该属性在调用 destroy 方法后仍然存在,并且仅消失随着页面刷新。在我removeAttr()在两个 DIV 上添加方法调用后,一切都按预期工作。
你的旅费可能会改变。
$(window).on('resize', function ()
{
if ($(this).width() <= 383 && !fired[0])
{
fired[0] = true;
fired[1] = false;
mySwiper = $('.swiper-container').swiper({ mode: 'horizontal', loop: false, wrapperClass: 'swiper-wrapper', slideClass: 'swiper-slide' });
}
else if ($(this).width() >= 384 && !fired[1])
{
fired[0] = false;
fired[1] = true;
mySwiper.destroy();
$('.swiper-wrapper').removeAttr('style');
$('.swiper-slide').removeAttr('style');
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22098 次 |
| 最近记录: |