解决方案
您可以将 css pointer-events: none 添加到您的按钮。该 css 属性禁用元素上的所有事件。就这样吧。
// Slick stuff
...
onAfterChange: function(slide, index) {
if(index === 4) {
$('.slick-next').css('pointer-events', 'none')
}
else {
$('.slick-next').css('pointer-events', 'all')
}
}
对于 .slick-prev 元素的指导方针相同。
在该解决方案中,您应该从配置中获取 函数,并且只使用类似这样的内容对其进行引用。
// Inside slick config
onAfterChange: afterChange
// Below somewhere
var afterChange = function(slide, index) { //stuff here }
还要检查是否有办法获取滑块的长度并验证它,而不是在if 语句中硬编码4。你可能可以做类似$('.slide').length
编辑
下面是afterChange()函数的实现方法。
$(document).ready(function(){
$('.scrollable').slick({
dots: false,
slidesToShow: 1,
slidesToScroll: 3,
swipeToSlide: true,
swipe: true,
arrows: true,
infinite: false,
});
$('.scrollable').on('afterChange', function (event, slick, currentSlide) {
if(currentSlide === 2) {
$('.slick-next').addClass('hidden');
}
else {
$('.slick-next').removeClass('hidden');
}
if(currentSlide === 0) {
$('.slick-prev').addClass('hidden');
}
else {
$('.slick-prev').removeClass('hidden');
}
})
});
还有一些 CSS,如果你想做动画,你应该在这里做。
.slick-prev.hidden,
.slick-next.hidden {
opacity: 0;
pointer-events:none;
}