【发布时间】:2020-08-12 06:59:35
【问题描述】:
我正在构建一个比较滑块。
这个想法是我有两个相邻的滑块,每个滑块都有相同的项目。
然后我根据每个滑块显示的内容过滤滑块。这样您就可以浏览两个滑块,而不会看到匹配的项目。
这是我目前所拥有的:
Codepen:https://codepen.io/flinch85/pen/MWaordK
$('.slider-1').slick({
dots: false,
arrows: true,
infinite: true,
speed: 300,
slidesToShow: 1,
slidesToScroll: 1,
easing: 'ease'
});
$('.slider-2').slick({
dots: false,
arrows: true,
infinite: true,
speed: 300,
slidesToShow: 1,
slidesToScroll: 1,
easing: 'ease',
initialSlide: 1
});
$('.slider-1').on('beforeChange', function () {
$(this).slick('slickUnfilter');
var otherIndex = $('.slider-2 .slick-active').attr('data-slick-index');
$(this).slick('slickFilter', 'div:not([data-slick-index="'+ otherIndex +'"])');
});
$('.slider-2').on('beforeChange', function (event, slick, slides, currentSlide, nextSlide) {
$(this).slick('slickUnfilter');
var otherIndex = $('.slider-1 .slick-active').attr('data-slick-index');
$(this).slick('slickFilter', 'div:not([data-slick-index="'+ otherIndex +'"])');
});
它可以工作,除了第一次滑动第二个滑块时,它会滑回同一张幻灯片。并且在移动相反的滑块并返回时,它将在第一次移动时重复相同的滑块。
我尝试将slickUnfilter 函数移动到beforeChange 和slickFilter 以发生afterChange。这可行,但会弄乱动画,因为下一项仅在幻灯片发生后才会更改。
【问题讨论】:
标签: javascript jquery slick.js