【发布时间】:2018-03-16 09:57:25
【问题描述】:
我需要一些有关 Swiper 的帮助。 根据此处的文档:http://idangero.us/swiper/api/,我需要在手动隐藏/显示幻灯片后调用 mySwiper.update()。但它并不总是适用于我的情况。
我已经搜索了这个问题,但只遇到了以下解决方案,这些解决方案应该但由于某种原因不起作用:
- mySwiper.update() 正如我之前提到的
- observer:true,observeParents:在初始化 swiper 时为 true。
我的 jQuery 代码可能有问题,但我无法弄清楚。
这就是我初始化 Swiper 的方式,因为我需要 2 行 3 列来显示数据。
var swiper = new Swiper('.swiper-container', {
slidesPerView: 3,
slidesPerColumn: 2,
spaceBetween: 30,
observer: true,
observeParents: true,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
});
Swiper 包装器在 HTML 中是这样的:
<div class="swiper-wrapper " id="plugins_list">
<div class="swiper-slide Category1 uk-animation-slide-top-medium">
<div class="uk-card uk-card-body">
<div class="uk-inline uk-slider-items uk-transition-toggle">
<img src="./images/plu2.jpg" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom">
<p>Default Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
<div class="swiper-slide Category1 uk-animation-slide-top-medium">
<div class="uk-card uk-card-body">
<div class="uk-inline uk-slider-items uk-transition-toggle">
<img src="./images/plu2.jpg" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom">
<p>Default Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
<div class="swiper-slide Category2 uk-animation-slide-top-medium">
<div class="uk-card uk-card-body">
<div class="uk-inline uk-slider-items uk-transition-toggle">
<img src="./images/plu2.jpg" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom">
<p>Default Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
</div>
这就是我想要更新包装器的方式:
// 'category1' button/tab selector
$('#category1').on('click', function() {
$('.swiper-slide').hide();
$('.Category1').show();
swiper.update(true);
});
// category2 button/tab selector
$('#category2').on('click', function() {
$('.swiper-slide').hide();
$('.Category1').show();
swiper.update();
});
// 'All' button/tab selector - to show all slides, this i use only to show animation that all slides were loaded, this is working fine every time with swiper update
$('#all').on('click', function() {
$('.swiper-slide').hide();
$('.swiper-slide').show();
swiper.update();
});
有什么想法吗?或者我应该如何以不同的方式显示/隐藏幻灯片?请告诉我。
如果问题不明确,我会打电话给swiper.update(),以便更新幻灯片位置,因为当幻灯片被过滤(隐藏/显示)时,剩余的幻灯片显示位置不正确。
【问题讨论】:
-
通过将 slidesPerColumn 设置为 1 来让 swiper.update() 工作,猜测这是 swiper 插件中的错误。并且不得不在设计上妥协。