【问题标题】:Using Slick carousel, how do I add a class to external nav?使用 Slick 轮播,如何将类添加到外部导航?
【发布时间】:2016-12-06 15:57:11
【问题描述】:

我正在使用 Slick JS 轮播,它工作正常。我设置了外部导航来控制它。我想在外部导航中的<a> 中添加一个“活动”类。将根据活动和/或单击的幻灯片添加和删除该类。

HTML 代码:

<div id="slider">
                <div class="responsive">
                    <h3>Responsive</h3>
                </div>
                <div class="resourceful">
                    <h3>Resourceful</h3>
                </div>
                <div class="remarkable">
                    <h3>Remarkable</h3>
                </div>
                <div class="resilient">
                    <h3>Resilient</h3>
                </div>
                <div class="relationships">
                    <h3>Relationships</h3>
                </div>

</div>
<div id="externalNav">
      <ul>
         <li><a href="javascript:void(0)">Responsive</a></li>
          <li><a href="javascript:void(0)">Resourceful</a></li>
          <li><a href="javascript:void(0)">Remarkable</a></li>
          <li><a href="javascript:void(0)">Resilient</a></li>
          <li><a href="javascript:void(0)">Relationships</a></li>
       </ul>
</div>

还有JS代码:

$('#slider').slick({
autoplay: true,
autoplaySpeed: 7000,
arrows: false
});

$("#externalNav li a").click(function(e){
  $(this).addClass("active");
  var slideIndex = $(this).parent().index();
  $( "#slider" ).slick('slickGoTo', parseInt(slideIndex));
});

目前,已添加活动类。但是当我单击外部导航中的另一个项目时,它并没有被删除。 $(this).addClass("active"); 在这里不是正确的解决方案,但我不确定还有什么可行的方法。

【问题讨论】:

    标签: jquery slick.js


    【解决方案1】:

    假设幻灯片的索引与导航匹配,您可以尝试使用平滑的 afterChange 事件:

    $("#externalNav li a").click(function(a) {
        var e = $(this).parent().index();
        $("#slider").slick("slickGoTo", parseInt(e));
    });
    
    $("#slider").on("afterChange", function(a, e, i, l) {
        $("#externalNav li a").removeClass("active");
        $("#externalNav li:eq(" + i + ") a").addClass("active");
    });
    

    【讨论】:

    • 谢谢,但这不太行。此解决方案似乎要等到滑块浏览完所有幻灯片,然后将“活动”类添加到 &lt;li&gt;
    • 刚刚在上面进行了编辑以添加一个 removeClass 行,该行将删除所有 LI 上的活动类,然后再将其重新应用于当前幻灯片。
    • 现在,该链接被添加为“活动”,但在添加后一秒钟被删除。它仍然会遍历所有幻灯片,然后将“活动”添加到所有链接。我还尝试删除我的$(this).addClass("active");,但后来根本没有添加该类。
    • 我已经编辑了答案。这是完整的工作代码 sn-p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2020-09-24
    • 2015-09-09
    • 2011-06-24
    • 2017-10-23
    相关资源
    最近更新 更多