勉強したことのメモ.

Webエンジニア / プログラマが勉強したことのメモ。

JSやjQueryで動的に追加した要素に対して「slick」でスライダーを実行する方法

   2024/10/01  jQuery JavaScript

外部サーバからAjax等で画像URLを取得したものをimgタグとしてページ内に描写し、それらに対して「slick」プラグインでスライダーを実行したかった。また、それとは別に先にスライダーが実行されているページに対して動的に画像を追加したかった。以下に対応方法をメモ。

 

slick

公式サイト

https://kenwheeler.github.io/slick/

CDN

CDNで使う場合は以下を記述する。

<script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css">

 

対応方法

空の要素に対して画像を追加してスライダー実行する場合

<div id="slider"></div>

<script>
$(function(){
    //#slider内に画像を追加
    for( let i = 1; i <= 5; i++ ){
        $(`#slider`).append(`<div><img src="./img/00${i}.jpg"></div>`);
    }
    //slick実行
    $(`#slider`).slick({
        dots: true,
        infinite: true,
        speed: 300,
        slidesToShow: 1,
        centerMode: true,
        variableWidth: true
    });
});
</script>

既に実行されているスライダーに対して画像を追加する場合

<div id="slider">
    <div><img src="./img/001.jpg"></div>
    <div><img src="./img/002.jpg"></div>
    <div><img src="./img/003.jpg"></div>
</div>

<script>
$(function(){
    const slickFunc = () => {
        $(`#slider`).slick({
            dots: true,
            infinite: true,
            speed: 300,
            slidesToShow: 1,
            centerMode: true,
            variableWidth: true
        });
    }

    slickFunc();

    //slick解除
    $('#slider').slick('unslick');

    //#slider内に画像を追加
    for( let i = 4; i <= 5; i++ ){
        $(`#slider`).append(`<div><img src="./img/00${i}.jpg"></div>`);
    }

    //slick実行
    slickFunc();
});
</script>

解説等

空の要素に対して画像を追加してスライダー実行する場合は特に注意点は無く、普通に画像を追加してslickを起動すれば良い。

既に実行されているスライダーに対して画像を追加する場合は一旦スライダーを解除してから画像を追加し、改めてslickを起動させる必要がある点に注意する。

 - jQuery JavaScript

  関連記事

JavaScriptにてスワイプ可能なLightBox系ライブラリ「PhotoSwipe」の利用方法
JavaScriptにてスワイプ可能なLightBox系ライブラリ「PhotoSwipe」の利用方法

あるサイトをWappalyzerで調査していた際に「PhotoSwipe」という ...

PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法
PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法

PHPで他サイトのスクリーンショットを取得したい。今回はライブラリは無しで実現し ...

PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像をWebP画像に変換し保存する方法

PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...

lazyload.js等のライブラリを使わずHTMLのみで画像の遅延読み込みを行う方法
lazyload.js等のライブラリを使わずHTMLのみで画像の遅延読み込みを行う方法

画像を遅延読み込みさせるとなるとだいぶ前に書いたlazyload.jsを用いる方 ...

Chart.jsで描写したグラフを画像としてダウンロードさせる方法
Chart.jsで描写したグラフを画像としてダウンロードさせる方法

サイト内にChart.jsでグラフを描写し、ボタンやリンクをクリックすることで当 ...