Slick.Js asNavFor 每次都重置为第一张幻灯片

Posted

技术标签:

【中文标题】Slick.Js asNavFor 每次都重置为第一张幻灯片【英文标题】:Slick.Js asNavFor Resetting to First Slide Each Time 【发布时间】:2018-09-27 11:31:55 【问题描述】:

我正在使用Slick.JS 插件并遇到了一个问题,希望有人能帮助我。我有两个轮播,都有五张幻灯片,顶部轮播一次显示一张幻灯片,底部一次显示全部五张。顶部可以通过箭头移动,底部的每个幻灯片图像都是可点击的,但没有箭头或圆点。

预期的行为是我希望单击轮播中的幻灯片一次显示五个(底部)以将另一个轮播移动到相应的幻灯片(单击底部的幻灯片 3 将顶部移动到幻灯片 3,例如)。同样,如果有人旋转顶部的那个,我希望底部的“活动”幻灯片与顶部显示的幻灯片的编号相对应。

这是我希望它如何运行的示例:https://codepen.io/pjmtokyo/pen/JYyjew。这里的“滑块同步”是另一个,但底部没有箭头:http://kenwheeler.github.io/slick/。

基本上,当我单击顶部导航上的箭头时,底部导航会适当更新(将类“slick-active”添加到相应的幻灯片)。但是,单击底部导航始终会将顶部导航返回到第一张幻灯片。我在做什么错所以点击底部没有适当地更新顶部?

这是我的 Slick 选项(我在 Jquery 3.2.1 中使用 slick.1.4.1):

  # HOMEPAGE WHO WE SERVE SLIDER
  homepageWhoWeServeSlickOptions =
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: true,   
    asNavFor: '.home-serve-icons',

  homeServeIconsOptions =
    slidesToShow: 5,
    slidesToScroll: 1,
    asNavFor: '.home-serve-scroll',
    arrows: false,
    focusOnSelect: true
  $('.home-serve-scroll').slick(homepageWhoWeServeSlickOptions)
  $('.home-serve-icons').slick(homeServeIconsOptions)

  $('.home-serve-icons .slick-slide').removeClass 'slick-active'
  $('.home-serve-icons .slick-slide').eq(0).addClass 'slick-active'

  $('.home-serve-scroll').on 'beforeChange', (event, slick, currentSlide, nextSlide) ->
    mySlideNumber = nextSlide
    $('.home-serve-icons .slick-slide').removeClass 'slick-active'
    $('.home-serve-icons .slick-slide').eq(mySlideNumber).addClass 'slick-active'
    return

这是 Slick 所针对的 html(其中交织的 Twig 代码):

% from '_macros/button' import button as m_button %
% set whoWeServe = craft.entries.section('homepageWhoWeServe').limit(5) %
<section>
    <div class="container">
        <div class="row">
            <div class="col-md-10 col-md-offset-1">
                <div class="home-serve-scroll" style="padding: 0px 40px;">
                    % for entry in whoWeServe.all() %
                        <div id="serve- loop.index ">
                            <h2> entry.title </h2>
                             entry.whoWeServeDescription 
                            % set destination = entry.whoWeServeLandingPage.one.getUrl() %
                            % set text = entry.whoWeServeCtaText | default("Learn More") %
                             m_button(destination, text, classes:'important-cta-button') 
                        </div>
                    % endfor %
                </div>
            </div>
        </div>
        <div class="col-md-10 col-md-offset-1">
            <div class="home-serve-icons">
                % for entry in whoWeServe.all() %
                    <div id="serve-icon- loop.index ">
                         entry.title 
                    </div>
                % endfor %
            </div>
        </div>  
    </div>
</section>

【问题讨论】:

【参考方案1】:

所以我能够解决这个问题。 Gouigouix 对这个问题的评论是诀窍:https://github.com/kenwheeler/slick/issues/649

基本上,您的容器 div 中有一个适当的 HTML 标记,它可以工作。我只是有一个 div,里面有一些未包装的文本。所以改变这个:

    <div class="col-md-10 col-md-offset-1">
        <div class="home-serve-icons">
            % for entry in whoWeServe.all() %
                <div id="serve-icon- loop.index ">
                     entry.title 
                </div>
            % endfor %
        </div>
    </div>  

到这里:

    <div class="col-md-10 col-md-offset-1">
        <div class="home-serve-icons">
            % for entry in whoWeServe.all() %
                <div id="serve-icon- loop.index ">
                    <p> entry.title </p>
                </div>
            % endfor %
        </div>
    </div>  

是票。希望对某人有所帮助!

【讨论】:

以上是关于Slick.Js asNavFor 每次都重置为第一张幻灯片的主要内容,如果未能解决你的问题,请参考以下文章

使用带有扭曲位置的slick.js的缩略图滑块

ngx-pagination - 将分页重置为第一页

如果使用 useEffect 更改了另一个过滤器,则重置为第一页

Kendo UI:单击按钮后将网格数据重置为第一页

KendoUI:点击按钮后将网格数据重置为第一页

Slick.js 未正确初始化