it-roy-ru.com

Использование 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

32
JochenJung

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

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

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

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

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

89
Eaton

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

alt text

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

alt text


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

(function ($) {

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

}(jQuery));
14
Andreas Grech

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

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

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

}

};
})(jQuery);    
8
Guus

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

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

OR

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

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

0
Haripal Rao