Использование JQuery в Drupal 7 - PullRequest
32 голосов
/ 13 января 2011

Я пишу свой собственный модуль 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

Ответы [ 5 ]

89 голосов
/ 13 января 2011

Из руководства по обновлению Drupal 7:

Javascript должен быть совместимым с другими библиотеками, чем JQuery по добавив небольшую обертку вокруг вашего существующий код:

(function ($) {
  // Original JavaScript code.
})(jQuery);

$ global больше не будет ссылаться на объект jquery. Однако с этим конструкция, локальная переменная $ будет ссылаться на jquery, позволяя вашему код для доступа к jQuery через $ во всяком случае пока код не будет конфликт с другими библиотеками, которые используют $ global.

Вы также можете просто использовать переменную 'jQuery' вместо переменной $ в вашем коде.

14 голосов
/ 13 января 2011

Согласно Firebug, ваш файл jQuery загружается:

alt text

Но $ перезаписывается чем-то другим:

alt text


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

(function ($) {

 // in this function, you can use the $ which refers to the jQuery object

}(jQuery));
8 голосов
/ 22 июля 2011

Скорее всего, ваш сценарий не инициализирован таким образом, вам придется использовать Drupal.behaviors.YOURTHEMENAME

(function ($) {
Drupal.behaviors.YOURTHEMENAME = {
attach: function(context, settings) {

/*Add your js code here*/
alert('Code');

}

};
})(jQuery);    
1 голос
/ 08 марта 2019

Вы можете создать отдельный файл для js, а затем добавить файл js, используя следующее:

drupal_add_js('path', 'module_name');
0 голосов
/ 08 марта 2016

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

(function($){
//your can write your code here with $ prefix
})(jQuery);

OR

jQuery(document).ready(function($){
//Write your code here
});

По сути, это позволит нашему коду запускаться и использовать ярлык $ для JQuery.

...