2017-11-06 8 views
0

特定のブラウザの幅で滑らかなスライダの最後の2つのスライドを削除する必要があります。最後の2つのスライドを削除します

私は考えた:

$('.slider').slick('slickRemove', slideIndex - 1); 

は最後のために、少なくともそれを行うだろう。しかし、私は間違っていました。ここで

はフィドルです:https://jsfiddle.net/osywsskz/

..

私は特定のスライド番号選択した場合:

$('.slider').slick('slickRemove',4); 

をそれが動作します。しかし、スライドの数が変化するので、これはthe github page of slick.jsから解決策を直接

+0

'slideIndex'はその時点では定義されていません。 – Soolie

答えて

1

を私たちは、スライド数を取得することができます

$(".slider").slick({ 
    autoplay: false, 
    dots: true, 
}); 

$(document).ready(function(){ 

    var docWidth = $(document).width();  

    function getLastSlide(){ 
    return ($(".slider").slick("getSlick").slideCount - 1); 
    } 

    var deleteCount = 2; 

    if(docWidth>500 && docWidth<700) 
    { 
    for (var i = 0; i < deleteCount; i++) { 
     $('.slider').slick('slickRemove', getLastSlide()); 
    } 
    } 
}); 
+0

ああ私の神マジック:D - ありがとう!最後の2つではなく最後の2つを削除するにはどうすればよいですか? –

+0

これ以上のブレークポイントを組み合わせるには、より良い方法があります:https://jsfiddle.net/cyhosusx/? –

+1

@MaxDiCampo私の投稿を更新しました。変数 'deleteCount'でピクチャの数を指定するだけで済むので、私のメソッドはより良いとすぐに思えます。 – leusrox

0

ではありません:

slickRemove
インデックス、removeBefore
はインデックスでスライドを削除します。 removeBefore がtrueに設定されている場合は、スライド先行インデックスを削除するか、 インデックスが指定されていない場合は最初のスライドを削除します。 removeBeforeがfalseに設定されている場合は、インデックスに続くスライド を削除します。インデックスが設定されていない場合は最後のスライドを削除します。

だから$('.slider').slick('slickRemove', false);トリック! がフィドルを参照してください:https://jsfiddle.net/0ufomhmz/

+0

ありがとう、しかしここに私は私の知識の境界にある:D - 私は本当にそれを行う方法を知らない。 :Oあなたは私にヒントを教えてもらえますか? –

+0

@ SteveB ofcourseで提供されているソリューションを使用できますが、これはもっと綺麗に見えますが、slick.jsのAPIも直接サポートされています。 – joerideg

+0

私は最もクリーンなソリューションを探しています。あなたの例では、最後の2つだけを削除するにはどうしたらいいですか? –

0

あなたはスライドのカウントとしてslideIndexを定義する必要があります。

var slideIndex = $(".slider > *").length 

あなたは最後の2枚のスライドを削除したい場合は、次のコードは動作します(ない最もエレガント)

$('.slider').slick('slickRemove', slideIndex); 
$('.slider').slick('slickRemove', slideIndex - 1); 

を次のようにそれはそうこのすべては、あなたのif文の内側で行うことができます最終コードは次のようになります

var docWidth = $(document).width();  

if(docWidth>500 && docWidth<700) 
{ 
    var slideIndex = $(".slider > *").length 
    $('.slider').slick('slickRemove', slideIndex); 
    $('.slider').slick('slickRemove', slideIndex - 1); 
} 
+0

ありがとう、これは動作しています!解決策を探している人は誰でも、ここに更新された謎です:https://jsfiddle.net/wxspsn35/ –

+0

申し訳ありません、さらなる質問。これをいくつかのブレークポイントと組み合わせるにはどうすればいいですか?だから例えば。 500-700の間に最後の2つを削除します。 701〜1000の間で最後のものを削除します。私は試してみましたが、失敗しました:https://jsfiddle.net/d4k5z2zh/ –

+0

私が提供したコードは、2行を使って最後の2つのインデックスを削除します。最後のインデックスを削除したいだけなら、slideIndex -1という行(if文の最後の行)を削除してください。下記のように、これを処理してスライドを削除するより良い方法があります。表示するスライドの量を設定し、残りの部分をスクロールできるようにすることができます。 – SteveB

関連する問題