2017-08-15 66 views
1

我試圖在拖動滑塊時將「滑動活動」類添加到標記。該類應用於點擊,但無法解決如何將其應用於其他對象!滑動滑塊 - 將滑動活動類應用到<a>根據活動滑塊

任何幫助解密我的代碼將不勝感激!

JS

$(document).ready(function() { 

    var $slideshow = $(".slider").slick({ 
     dots: false, 
     infinite: true, 
     speed: 300, 
     slidesToShow: 1, 
     adaptiveHeight: true, 
     swipeToSlide: true, 
     touchThreshold: 3, 
     arrows: false 
    }); 

    $('.links').on('click', 'a', function(e) { 
     var slideIndex = $(this).closest('li').index(); 

     $slideshow.slick('slickGoTo', parseInt(slideIndex)); 
     $('.links li a').removeClass('slick-current'); 
     $(this).addClass('slick-current'); 
     e.preventDefault(); 
    }); 


    $('.slider').on('afterChange', function(event,slick,i) { 
     $('.links li a .slick-slide').removeClass('slick-current'); 
     $('.links li a .slick-slide').eq(i).addClass('slick-current'); 
    }); 

    $('.links li a .slick-slide').eq(0).addClass('slick-current'); 

}); 

HTML

<div class="large-3 columns page-content-left"> 

     <ul class="links"> 
      <li><a href="#">slide1</a></li> 
      <li><a href="#">slide2</a></li> 
      <li><a href="#">slide3</a></li> 

     </ul> 

</div> 

<div id="" class="large-9 columns page-content-right">        
    <section class="slider" id="slider1"> 

     <div class="slide"> 
     </div> 
     <div class="slide"> 
     </div> 
     <div class="slide"> 
     </div> 

    </section> 
</div> 
+0

根據http://kenwheeler.github.io/slick/,你有3個'afterChange'事件的參數:'slick','currentSlide'和'nextSlide'。你正在使用活動,光鮮和我。也許你在'eq()'中使用了一些無效數據?我想你必須做'$(currentSlide).addClass('slick-current')',但我沒有測試過它。 – skolind

回答

2

你必須slick-initialized添加類links

我們沒有你的HTML,但它應該是這個樣子:

<div class="links slick-initialized"> 
    <li><a><span class="slick-slide">1</span></a></li> 
    <li><a><span class="slick-slide">2</span></a></li> 
    <li><a><span class="slick-slide">3</span></a></li> 
</div> 

更新

現在我們已經很清楚,爲什麼你還是有問題的HTML。你用$('.links li a .slick-slide')來設置課程。這與我的代碼匹配,但是,你有不同的結構。

 <ul class="links"> 
      <li><a href="#">slide1</a></li> 
      <li><a href="#">slide2</a></li> 
      <li><a href="#">slide3</a></li> 
     </ul> 

首先你必須將其更改爲

<ul class="links slick-initialized"> 
     <li><a href="#" class="slick-slide">slide1</a></li> 
     <li><a href="#" class="slick-slide">slide2</a></li> 
     <li><a href="#" class="slick-slide">slide3</a></li> 
    </ul> 

和jQuery的第二個改變爲$('.links li a.slick-slide')(空間a.slick-slide之間移除)。

+0

我也在我的HTML中添加了!但我嘗試添加光滑初始化但沒有運氣。 –

+1

@BenjiBaird它看起來像HTML結構和jQuery選擇器不匹配。我在答案中加了一點解釋。 – arcs

+0

@BenjiBaird你看過我的評論嗎?應該夠了。 – skolind