Using JQuery in Drupal 7

JochenJung picture JochenJung · Jan 13, 2011 · Viewed 59.8k times · Source

I'm writing my own Drupal 7 module, and like to use JQuery in it.

$('#field').toggle();

But I'm getting this error:

TypeError: Property '$' of object [object DOMWindow] is not a function

It seems that JQuery is not loaded. Otherwise $ should be defined.

Though I actually include it in the header:

<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>

Do I have to do anything else to activate JQuery in Drupal? Is $ being overwritten by Drupal?

That's the website: http://rockfinder.orgapage.de

Answer

Eaton picture Eaton · Jan 13, 2011

From the Drupal 7 upgrade guide:

Javascript should be made compatible with other libraries than jQuery by adding a small wrapper around your existing code:

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

The $ global will no longer refer to the jquery object. However, with this construction, the local variable $ will refer to jquery, allowing your code to access jQuery through $ anyway, while the code will not conflict with other libraries that use the $ global.

You can also just use the 'jQuery' variable instead of the $ variable in your code.