Slick Carousel Uncaught TypeError: $(...). Slick не является функцией
Каким-то образом я не могу правильно использовать карусель (http://kenwheeler.github.io/slick/).
Я получаю следующую ошибку:
Uncaught TypeError: $(...).slick is not a function
Я запускаю следующий код в файле javascript:
function initSlider(){
$('.references').slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 1,
autoplay: true,
prevArrow: '<div class="slick-prev"><i class="fa fa-chevron-left"></i></div>',
nextArrow: '<div class="slick-next"><i class="fa fa-chevron-right"></i></div>'
});
}
Я включил последнюю версию jQuery (2.1.4) с беседкой. Я также попытался включить JQuery CDN в начало моего файла шаблона макета, но это тоже ничего не решило.
Единственное, что может означать что-то, это то, что когда я не использую функцию для вызова слайдера, она работает, но это дает мне ошибку:
Uncaught TypeError: Cannot read property 'add' of null
Я узнал, что это означает, что код загружен до загрузки DOM, что является правильным (я думаю).
Спасибо заранее!
Изменить: я создал JSFiddle из моего кода: https://jsfiddle.net/brz30e77/
EDIT2: ошибка повторялась каждый раз при добавлении новой функции в файл JS. В конечном итоге я разделил свой конкатенированный JS файл и выяснил, что были загружены две версии загружаемого jQuery, из которых один был очень-очень старым.
Ответы
Ответ 1
Я нашел решение позже, поэтому я поместил его в качестве ответа:
Время от времени ошибка повторялась при добавлении новой функции в файл JS. В конечном итоге я разделил свой конкатенированный JS файл и обнаружил, что были загружены две версии загружаемого jQuery, из которых один был очень, очень старый.
Ответ 2
Недавно была та же проблема: TypeError: $(...). slick не является функцией
Нашел интересное решение.
Надеюсь, это может быть полезно кому-то.
В моей конкретной ситуации есть: jQuery + WHMCS + slick.
Он работает нормально автономно, без WHMCS. Но после интеграции с WHMCS появляется ошибка.
Решением было использование jQuery в режиме noConflict.
Пример:
Ваш код:
$(document).ready(function() {
$('a').click( function(event) {
$(this).hide();
event.preventDefault();
});
});
Код в режиме noConflict:
var $jq = jQuery.noConflict();
$jq(document).ready(function() {
$jq('a').click( function(event) {
$jq(this).hide();
event.preventDefault();
});
});
Решение найдено здесь:
http://zenverse.net/jquery-how-to-fix-the-is-not-a-function-error-using-noconflict/
Ответ 3
Вам не удалось загрузить файл slick.js
. Добавьте этот script файл https://kenwheeler.github.io/slick/slick/slick.js
.
Я обновил ваш JSFiddle, добавив внешний файл на левой боковой панели External Resources
. Затем он не сообщает об ошибке: $(...).slick is not a function
.
Ответ 4
Думал, что это будет полезно для других с той же проблемой, что и некоторые из них здесь, - я столкнулся с этим, но обнаружил, что загрузил slick.js ПОСЛЕ моего main.js(который вызывал slick() функция). поменял местами два, и он отлично работает
Ответ 5
Трудно сказать, не глядя на полный код, но этот тип ошибки
Uncaught TypeError: $(...).slick is not a function
Обычно означает, что вы либо забыли включить slick.js на странице, либо включили его перед jquery.
Убедитесь, что jquery - это первый js файл, и после него вы включили библиотеку slick.js.
Ответ 6
Try:
function initSlider(){
$('.references').slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 1,
autoplay: true,
prevArrow: '<div class="slick-prev"><i class="fa fa-chevron-left"></i></div>',
nextArrow: '<div class="slick-next"><i class="fa fa-chevron-right"></i></div>'
});
}
$(document).on('ready', function () {
initSlider();
});
Также убедитесь, что вы включили JS файл для слайдера после включения jQuery и перед тем, как включить этот код для инициализации.
Ответ 7
Старый вопрос, но у меня есть только один недавний файл jQuery (v3.2.1), включенный (конечно, также включен slick), и у меня все еще есть эта проблема. Я исправил это следующим образом:
function initSlider(selector, options) {
if ($.fn.slick) {
$(selector).slick(options);
} else {
setTimeout(function() {
initSlider(selector, options);
}, 500);
}
}
//example: initSlider('.references', {...slick options...});
Эта функция пытается применить пятно 2 раза в секунду и останавливается после его работы. Я не анализировал его глубоко, но я думаю, что гладкая инициализация откладывается.
Ответ 8
В моем случае решение перемещало jQuery include непосредственно перед </head>
. С помощью Slick в нижней части перед </body>
и непосредственно перед включением моего скрипта, который инициирует слайдер.
Ответ 9
У меня была такая же проблема, прежде чем я узнал, что я поместил код после закрытия тега body. Переместив его в тег, теперь все в порядке.
<body>
$(document).ready(function(){
$('.multiple-items').slick({
infinite: true,
slidesToShow: 3,
slidesToScroll: 3
});
});
</body>
Ответ 10
У меня такая же проблема. Когда я пытался и тестировал в браузере на своем компьютере, у меня не было ошибки "не функции", но когда я попытался на виртуальной машине, появилась ошибка. Я решил это, добавив пятно на моем веб-сервере и добавив URL-адреса файлов css и js с моего веб-сервера в свой html. До этого я вытаскивал css и js из CDN.
Ответ 11
Для меня проблема решена после изменения:
<script type='text/javascript' src='../../path-to-slick/slick.min.js'></script>
к
<script src='../../path-to-slick/slick.min.js'></script>
Моя работа основана на JQuery 2.2.4, и я запускаю свою разработку на последних Xampp и Chrome.