[Slick.js] 実行完了後にautoplayなどのオプションを有効にする方法
1 min read
状況
slick の実行完了のタイミングでautoplay
を有効にしたい。
環境
- Slick.js - Version: 1.6.0
slickSetOption を使う
後付でオプションを設定する場合は、slickSetOption
を実行すれば良い。
$(".js-slick").slick("slickSetOption", "autoplay", true, true);
問題
タイミングとして、init
のタイミングでオプションを指定したかった為、以下のような実装を行った。
$(".js-slick").on("init", function (event, slick) {
$(this).slick("slickSetOption", "autoplay", true, true);
});
だが、このタイミングでslickSetOption
を実行しても、slickSetOption
が undefined
となり処理できなかった。
解決
anyone still dealing with this: I seemed to have some success with wrapping my API call in a setTimeout(method, 0). Bummer of a bug.
Calling a method right after the “init” event causes an error · Issue #1802 · kenwheeler/slick · GitHub
参考に以下のような処理を行った。
$(".js-slick").on("init", function (event, slick) {
var $self = $(this);
setTimeout(function () {
$self.slick("slickSetOption", "autoplay", true, true);
}, 0);
});