33

我正在编写自己的 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>

在 Drupal 中激活 JQuery 是否需要做任何其他事情?$ 是否被 Drupal 覆盖?

那是网站:http ://rockfinder.orgapage.de

4

5 回答 5

92

从 Drupal 7 升级指南:

通过在现有代码周围添加一个小包装器,应该使 Javascript 与 jQuery 以外的其他库兼容:

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

$ global 将不再引用 jquery 对象。但是,通过这种构造,局部变量 $ 将引用 jquery,允许您的代码通过 $ 访问 jQuery,而代码不会与使用 $ 全局的其他库冲突。

您也可以在代码中只使用“jQuery”变量而不是 $ 变量。

于 2011-01-13T14:54:34.503 回答
14

根据 Firebug,您的 jQuery 文件正在被加载:

替代文字

但是$正在被其他东西覆盖:

替代文字


您应该做的是将变量的使用封装在一个函数中,该函数使用对象作为它的第一个实际参数$来调用自身:jQuery

(function ($) {

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

}(jQuery));
于 2011-01-13T14:52:31.663 回答
8

您的脚本可能没有以这种方式初始化,您必须使用 Drupal.behaviors.YOURTHEMENAME

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

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

}

};
})(jQuery);    
于 2011-07-22T12:16:38.407 回答
1

您可以为 js 创建单独的文件,然后使用以下命令添加 js 文件:

drupal_add_js('path', 'module_name');
于 2019-03-08T13:26:48.160 回答
1

“$ 不是函数”是您在使用 jQuery 时可能遇到的一个非常常见的错误。您可以尝试以下给出的任何答案:

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

或者

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

基本上这将允许我们的代码运行并使用 JQuery 的 $ 快捷方式。

于 2016-03-08T17:34:18.060 回答