Не удается загрузить скрипт jQuery в WordPress ($ не является функцией)

#jquery #wordpress

#jquery #wordpress

Вопрос:

Я работал над версией интерактивной карты Яна Ланна, встроенной в WordPress.

Скрипт отлично работает на автономной странице, но при загрузке в WordPress скрипт ничего не делает. Я пробовал различные решения — загрузка jQuery разными способами (в functions.php , встроенный, в верхнем и нижнем колонтитулах), переход к более ранней версии jQuery, пространство имен функций, вы называете это. Ничего не происходит, firebug не показывает ошибок, ничего.

На данном этапе я в полной растерянности, буду признателен за любую предложенную помощь.

Рабочая демонстрация здесь:http://www.ianlunn.co.uk/demos/bbc-news-jquery-map / Источник на Github: https://github.com/IanLunn/BBC-News-jQuery-Map

// Обновить после ответов

Выясняется, что знак доллара зарезервирован в WordPress для библиотеки Prototype, поэтому он выдает ошибку с «$ не является функцией» — принятый ответ ниже указывает на это, но только в комментариях, следовательно, обновление для ясности. Например:-

 $().ready(function() {
   $("#select_me").show();
});

jQuery().ready(function() {
   jQuery("#select_me").show();
});
  

Комментарии:

1. просто для получения дополнительной информации: в WordPress библиотека jQuery загружается в неконфликтном режиме . Вот почему функции jQuery должны быть append jQuery() , а не $() . Внутри такой функции $() снова работает. Т.е. в вашем примере $("#select_me").show(); все еще действует, пока самая внешняя оболочка начинается с jQuery() .

Ответ №1:

Я вижу две ошибки в консоли Firebug, когда захожу на вашу страницу.

Во-первых,:

 XML can't be the whole program.
?>    map.js?ver3.2.1 (line 55)
  

Второй -:

 document.getElementById("recaptcha-submit-btn-area") is null
/about/...ve-map/ (line 595)
  

Затем я вижу:

 carouFredSel: No element selected.
jquery...r=1.4.2 (line 14)
  

Вы не видите этот вывод?

РЕДАКТИРОВАТЬ: ваш map.js имеет код, завернутый в теги PHP, вот в чем проблема. Это PHP-код, доставляемый клиенту в файле Javascript.

Комментарии:

1. Я просто попытался вставить код из bbc map.js загрузите файл на вашу страницу, запустив его в Firebug console (мне пришлось обернуть его в закрытие, которое ссылается на jQuery как $, потому что вашей странице присвоено что-то другое для $). Затем он наполовину сработал… карта не анимировалась, но когда я наводил курсор на область карты, я видел, что правильный элемент в списке выделен.

2. Как только я исправил проблему, которая перезаписала map.js файл с functions.php стало очевидно, что wordpress резервирует $ — спасибо за вашу помощь!

Ответ №2:

Я знаю, что на этот вопрос уже был дан ответ, но именно так я научился это делать, и хотя это, по сути, тот же ответ, это может помочь другим просто скопировать / вставить решение.

В принципе, оберните весь jQuery внутри этой функции:

 jQuery(document).ready(function($) { 

    /* Put your jQuery functions here,
       no need to change the $ to jQuery. */


});
  

Ответ №3:

Взгляните на загружаемый файл скрипта:

http://mjw.view-wireframes.com/jquery-map/map.js

WordPress выдает PHP-файл, а не файл .js. Т.е., похоже, проблема в том, как работает WP, или вы включаете файл Javascript.