Intereting Posts
Автоматический аккордеон jQuery из тегов заголовков Практическое руководство. Простой вложенный короткий код Использование preg_replace () с фильтром the_content Функция WordPress с атрибутом переходит к шаблону Программно добавление изображений в медиа-библиотеку настраиваемый плагин – настраиваемый тип сообщения – выбираемые параметры для пользователя Отключить сброс пароля WordPress через почту, а не уведомлять администратора о запросе на сброс Как узнать, активен ли скрипт, запущенный wp_cron? Проверка покупки Paypal – это успех или нет в Easy Digital Download Plugin Добавление тега в wp_nav_menu Почему apply_filters возвращают непустую строку, когда возвращаемое значение пусто? Бесплатная тема WordPress для учебного сайта интрасети Добавление моей собственной кнопки «добавить в корзину» Удаление тегов и сообщений, соответствующих списку ключевых слов Как добавить поиск по автору в поиск по умолчанию WordPress по умолчанию?

Странность в jQuery, поставляемая с WordPress

У меня проблема с jQuery, поставляемым с WordPress. Эта проблема имеет следующий HTML-код:

<!DOCTYPE html> <html> <head> <script src='http://wordpress.myownserver/wp-includes/js/jquery/jquery.js?ver=1.8.3'></script> </head> <body> <div id="something"></div> <script>if(window.jQuery) console.log("window.jQuery");</script> <script>window.jQuery || document.write('<script src="/res/jquery-1.8.3.min.js"><\/script>')</script> <script> $(document).ready(function () { $('#something').html('something'); }); </script> </body> 

Это типичная ситуация на моем сайте WordPress, где jQuery WordPress включен (для панели администратора) в <head> , а мой собственный CDN / резервный jQuery включен до конца </body> .

Консольный вывод этой страницы:

 window.jQuery Uncaught TypeError: Property '$' of object [object Object] is not a function 

Я могу решить эту проблему несколькими способами, например, я мог бы заменить часть jQuery <script> в <body> образом:

 <script src="/res/jquery-1.8.3.min.js"></script> 

Без проверки window.jQuery . Но это не оптимально, учитывая, что я включил jQuery дважды. Затем я попытался заменить <script> в <head> на:

 <script src="/res/jquery-1.8.3.min.js"></script> 

Удивительно, но это также решило проблему. Я знал о wp_deregister_script , но для администратора это также отключает jQuery в панели управления.

Я бы хотел сохранить админ-бар для администратора. Так что в настоящее время сайт только ломается (см. Вывод на консоль выше), когда администратор входит в систему. Мне интересно, является ли jQuery, поставляемое с WordPress, чем-то особенным. Я использую версию 3.5.1, и я планирую использовать jQuery в своей собственной теме. Должен ли я просто включить его дважды, чтобы решить эту проблему?

Solutions Collecting From Web of "Странность в jQuery, поставляемая с WordPress"

Существует различие с версией jQuery, поставляемой с WordPress, как схема на странице Codex для wp_enqueue_script :

Примечание. Библиотека jQuery, включенная в WordPress, загружается в режиме «без конфликтов». Это необходимо для предотвращения проблем совместимости с другими библиотеками javascript, которые может загружать WordPress.

Измените свой сценарий, чтобы ссылаться на объект jQuery с помощью jQuery а не $ , передавая объект jQuery как $ чтобы вы могли использовать его, как обычно, внутри:

 jQuery(document).ready(function($) { $('#something').html('something'); }); - jQuery(document).ready(function($) { $('#something').html('something'); }); - jQuery(document).ready(function($) { $('#something').html('something'); });