Скользкая Карусель 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) с bower. Я также попытался включить jQuery CDN в голову моего файла шаблона макета, но это тоже ничего не решило.
единственное, что странно это может означать, что когда я не использую функцию для вызова слайдера, она работает, но это дает мне ошибку:
Uncaught TypeError: Cannot read property 'add' of null
я узнал, что это означает, что код был загружен до загрузки DOM, что является правильным (я думаю).
спасибо заранее!
Edit: я создал JSFiddle из своего кода:https://jsfiddle.net/brz30e77/
EDIT2: ошибка сохраняется время от времени при добавлении новой функции в мой файл JS. В конечном итоге я удалил свой объединенный файл JS и обнаружил, что загружаются две версии jQuery, из которых одна была очень, очень старой.
10 ответов
Я сам нашел решение позже, поэтому я поместил его в качестве ответа:
ошибка сохраняется время от времени при добавлении новой функции в мой JS-файл. В конце концов я раздел свой объединенный файл JS и обнаружил, что загружаются две версии jQuery, из которых одна была очень, очень старой.
недавно была та же проблема: TypeError: $(...).slick не является функцией
нашел интересное решение. Надеюсь, это кому-нибудь пригодится.
в моей конкретной ситуации есть: jQuery + WHMCS + slick. Он работает нормально автономно, без WHMCS. Но после интеграции в WHMCS появляется ошибка.
решением было использовать jQuery в режиме noConflict.
Ex: Код:
$(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/
трудно сказать, не глядя на полный код, но этот тип ошибки
Uncaught TypeError: $(...).slick is not a function
обычно означает, что вы либо забыли включить Слик.js на странице или вы включили его перед jquery.
убедитесь, что jquery является первым файлом js, и вы включили пятно.библиотека js после этого.
попробуй:
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 и перед включением кода выше для инициализации.
вам не удалось загрузить . Добавьте этот файл скрипта https://kenwheeler.github.io/slick/slick/slick.js
.
я обновил свой JSFiddle добавив внешний файл на левой боковой панели External Resources
. Тогда он не сообщает об ошибке:$(...).slick is not a function
.
думал, что это будет полезно для других с той же проблемой, как я видел несколько Здесь - я столкнулся с этим, но обнаружил, что я загрузил Слик.js после моей основной.js (который вызывал функцию slick ()). поменял два и он работает
старый вопрос, но у меня есть только один недавний файл jQuery (v3.2.1) включено (пятно также включено, конечно), и у меня все еще есть эта проблема. Я исправил это так:
function initSlider(selector, options) {
if ($.fn.slick) {
$(selector).slick(options);
} else {
setTimeout(function() {
initSlider(selector, options);
}, 500);
}
}
//example: initSlider('.references', {...slick's options...});
эта функция пытается применить Слик 2 раза в секунду и останавливается после его работы. Я не анализировал это глубоко, но думаю, что инициализация Слика откладывается.
в моем случае решение перемещало jQuery include непосредственно перед </head>
тег. С Slick включить в нижней части перед </body>
и непосредственно перед моим скриптом включить, который инициирует слайдер.
У меня была такая же проблема, прежде чем я узнал, что я поставил код после закрытия тега тела. После перемещения его в тег, теперь все в порядке
<body>
$(document).ready(function(){
$('.multiple-items').slick({
infinite: true,
slidesToShow: 3,
slidesToScroll: 3
});
});
</body>
для меня проблема решается после того, как я изменил:
<script type='text/javascript' src='../../path-to-slick/slick.min.js'></script>
to
<script src='../../path-to-slick/slick.min.js'></script>
моя работа основана на jQuery 2.2.4, и я запускаю свою разработку на последних Xampp и Chrome.