我在用着危险的狙击手 http://www.idangero.us/sliders/swiper/对于我的网站,分辨率较低。我是这样称呼它的:
var resolution = 670;
if ($(window).width() < resolution) {
var mySwiper = $('.swiper-container').swiper({
mode:'horizontal',
loop: true,
grabCursor: true,
paginationClickable: true
});
因此,当您在桌面浏览器中访问它时,不会调用滑动器。我想要做的是,如果用户将窗口大小调整为小于以下尺寸,则“打开它”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();
}
}
});
发生了两件不希望的事情:
- 如果用户使用较小的分辨率并将其大小调整为仍调用滑动器的分辨率,则会重新启动滑动器。
- 如果用户使用较小的分辨率并将其调整为较大的分辨率,则它不会被破坏。
我认为我的问题是typeof
。我不太清楚变量像这样被调用时是如何工作的:$('.swiper-container').swiper()
.
我如何“取消调用”swiper,如果它已经被调用,如何不调用它?
我的解决方案:
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();
});
它有效! :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)