33

私は独自のDrupal7モジュールを作成しており、その中で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);

$グローバルは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

「$は関数ではありません」は、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 に答える
1

js用に別のファイルを作成し、次を使用してjsファイルを追加できます。

drupal_add_js('path', 'module_name');
于 2019-03-08T13:26:48.160 に答える