【问题标题】:Slick Slider: Mark custom nav link as active when navigate with arrowsSlick Slider:使用箭头导航时将自定义导航链接标记为活动
【发布时间】:2022-02-08 02:01:24
【问题描述】:

我正在为我的光滑滑块使用一些自定义导航链接来导航到某些幻灯片。

它工作正常,但如果我从滑块添加内置箭头,我会遇到问题。 当我使用这些导航时,自定义链接不会获得 .active 类。

有没有办法添加这个类?我知道,我可以使用滑块同步选项来做到这一点。但就我而言,我必须使用自定义链接并且不能使用 asNavFor 选项。

这是我当前的代码(此处的工作示例:https://codepen.io/cray_code/pen/JjObOPa):

$('.product-gallery').slick({
dots: false,
    arrows: true,
    speed: 300,
    slidesToShow: 1,
    slidesToScroll: 1,
    fade: true,
});

// Custom links
$('a[data-slide]').click(function(e) {
    e.preventDefault();
    var slideno = $(this).data('slide');
    $('.product-gallery').slick('slickGoTo', slideno - 1);
    $('a[data-slide]').removeClass('active');
    this.classList.add('active');
});

感谢answer

【问题讨论】:

    标签: javascript jquery css slider slick.js


    【解决方案1】:

    您可以使用afterChange 方法来执行此任务。这是现场演示https://codepen.io/sifat009/pen/bGYgBvP

    这是实现此目的的 javascript 代码。

    $('.product-gallery').slick({
        dots: false,
        arrows: true,
        speed: 300,
        slidesToShow: 1,
        slidesToScroll: 1,
        fade: true,
    });
    
    $('.product-gallery').on('afterChange', function(event, slick, currentSlide, nextSlide){
      const link = document.querySelector(`.action a[data-slide="${currentSlide+1}"]`);
        $('a[data-slide]').removeClass('active');
        link?.classList?.add('active');
    });
    
    $('a[data-slide]').click(function(e) {
        e.preventDefault();
        var slideno = $(this).data('slide');
        $('.product-gallery').slick('slickGoTo', slideno - 1);
        $('a[data-slide]').removeClass('active');
        this.classList.add('active');
    });
    

    【讨论】:

    • 完美,非常感谢!
    • 它只适用于每页一个滑块。如果一页有多个滑块怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多