Использование JQuery в Drupal 7
Я пишу свой собственный модуль Drupal 7 и люблю использовать JQuery в нем.
$('#field').toggle();
Но я получаю эту ошибку:
TypeError: Property '$' of object [object DOMWindow] is not a function
Кажется, что JQuery не загружен. В противном случае следует определить $.
Хотя я действительно включаю его в заголовок:
<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>
Нужно ли мне что-то делать, чтобы активировать JQuery в Drupal? Переписывается ли $Drupal?
Что веб-сайт: http://rockfinder.orgapage.de
Ответы
Ответ 1
Из руководства по обновлению Drupal 7:
Javascript должен быть совместим с другими библиотеками, чем jQuery добавление небольшой обертки вокруг вашего существующий код:
(function ($) {
// Original JavaScript code.
})(jQuery);
$global больше не будет ссылаться на объект jquery. Однако при этом построение, локальная переменная $будет ссылаться на jquery, код для доступа к jQuery через $во всяком случае, пока код не будет конфликт с другими библиотеками, которые используют $global.
Вы также можете просто использовать переменную 'jQuery' вместо переменной $в вашем коде.
Ответ 2
В соответствии с Firebug загружается файл jQuery:
![alt text]()
Но $
переписывается чем-то другим:
![alt text]()
Что вам нужно сделать, это инкапсулировать использование переменной $
с помощью функции, которая вызывает себя с использованием объекта jQuery
в качестве первого фактического аргумента:
(function ($) {
// in this function, you can use the $ which refers to the jQuery object
}(jQuery));
Ответ 3
Скорее всего, ваш script не инициализирован таким образом, вам придется использовать Drupal.behaviors.YOURTHEMENAME
(function ($) {
Drupal.behaviors.YOURTHEMENAME = {
attach: function(context, settings) {
/*Add your js code here*/
alert('Code');
}
};
})(jQuery);
Ответ 4
"$ is not a function" - очень распространенная ошибка, с которой вы можете столкнуться при работе с jQuery. Вы можете попробовать любые ответы ниже:
(function($){
//your can write your code here with $ prefix
})(jQuery);
ИЛИ
jQuery(document).ready(function($){
//Write your code here
});
В основном это позволит запустить наш код и использовать ярлык $для JQuery.