У меня есть простой скрипт jQuery в плагине WordPress, который использует обертку jQuery, как это:
$(document).ready(function(){
// jQuery code is in here
});
Я вызываю этот скрипт из панели управления WordPress и загружаю его ПОСЛЕ загрузки инфраструктуры jQuery.
Когда я проверяю страницу в Firebug, я постоянно получаю сообщение об ошибке:
Ошибка типа: $ не является функцией
$ (Документ) .ready (функция () {
Должен ли я обернуть скрипт в эту функцию:
(function($){
// jQuery code is in here
})(jQuery);
У меня была эта ошибка довольно много раз, и я не уверен, как с ней справиться.
Любая помощь будет принята с благодарностью.
$
в консоли и нажмете ввод - что вы видите?Ответы:
По умолчанию, когда вы ставите jQuery в очередь в Wordpress, вы должны его использовать
jQuery
, и$
он не используется (это для совместимости с другими библиотеками).Ваше решение оборачивать это
function
будет работать нормально, или вы можете загрузить jQuery другим способом (но это, вероятно, не очень хорошая идея в Wordpress).Если вы должны использовать
document.ready
, вы можете перейти$
к вызову функции:источник
jQuery(function ($) { ...
, вы должны использоватьjQuery
вместо$
Это должно исправить это:
Проще говоря, WordPress запускает свои собственные сценарии раньше, чем вы, и они выпускают
$
var, чтобы он не конфликтовал с другими библиотеками. Это имеет смысл, поскольку WordPress используется для всех видов веб-сайтов, приложений и, конечно, блогов.Из их документации:
источник
Это решение сработало для меня
Переместите свой код в замыкание и используйте
$
вместоjQuery
Я нашел вышеуказанное решение в /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... после поиска слишком много
источник
Вы можете избежать конфликта, как это
источник
Благодарим Ашвани Панвара и Сайссо за ответ: https://stackoverflow.com/a/29341144/3010027
источник
Попробуй это:
источник
Вы должны передать $ в функции ()
источник
заменить
$
знакjQuery
следующим образом:источник
Дважды проверьте ваши ссылки JQuery. Возможно, вы либо ссылаетесь на него более одного раза, либо вызываете свою функцию слишком рано (до того, как будет определен jQuery). Вы можете попробовать, как упомянуто в моих комментариях, и поместить любую ссылку на jQuery вверху вашего файла (в заголовке) и посмотреть, поможет ли это.
Если вы используете инкапсуляцию jQuery, это не поможет в этом случае. Пожалуйста, попробуйте, потому что я думаю, что это красивее и очевиднее, но если jQuery не определен, вы получите те же ошибки.
В конце ... jQuery в настоящее время не определен.
источник
script
ссылкиJQuery
на верхнюю часть,index.html
и это, вероятно, сработаетТакже я нахожу хорошее решение для использования режима jQuery noConflict.
Я нашел это решение отсюда. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
источник
использование
вместо того
или
Внутри функции $ указывает на jQuery, как и следовало ожидать
источник
Что сработало для меня. Первая библиотека для импорта - это библиотека запросов, которая затем вызывает метод jQuery.noConflict ().
источник
источник
теперь используйте jq вместо jQuery
источник
Вы сталкиваетесь с этой проблемой, когда имя вашей функции и одно из имен идентификаторов в файле совпадают. просто убедитесь, что все ваши имена в файле уникальны.
источник
Ты можешь использовать
или
источник