2011-01-13 11 views
32

मैं अपना खुद का ड्रूपल 7 मॉड्यूल लिख रहा हूं, और इसमें JQuery का उपयोग करना पसंद करता हूं।Drupal में JQuery का उपयोग 7

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

ऐसा लगता है कि JQuery लोड नहीं है:

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

लेकिन मैं इस त्रुटि हो रही है। अन्यथा $ परिभाषित किया जाना चाहिए।

हालांकि मैं वास्तव में हेडर में शामिल:

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

मैं Drupal में JQuery सक्रिय करने के लिए कुछ और करने की है? क्या ड्रूपल द्वारा $ अधिलेखित किया जा रहा है?

वेबसाइट है कि: http://rockfinder.orgapage.de

उत्तर

89

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.

भी कर सकते हैं बस अपने कोड में $ चर के बजाय 'jQuery' चर का उपयोग करें।

+0

धन्यवाद! यही वही है जो मैं ढूंढ रहा था और नहीं मिला! – JochenJung

+3

मैं जावास्क्रिप्ट में इस वाक्यविन्यास से अपरिचित हूं। क्या कोई यह बता सकता है कि यहां क्या हो रहा है? –

+2

यह मूल रूप से $ से jQuery तक एक उपनाम बनाता है। जैसा ऊपर बताया गया है, इसका कारण अन्य जेएस पुस्तकालयों को शामिल करना है जो $ का उपयोग कर रहे हैं। – Berdir

14

Firebug के अनुसार, अपने jQuery फ़ाइल लोड किया जा रहा है:

alt text

लेकिन $ कुछ और द्वारा ओवरराइट किया जा रहा है:

alt text


आपको क्या करना चाहिए क्या एक समारोह है कि jQuery वस्तु का उपयोग कर के रूप में यह पहली वास्तविक तर्क है ही आह्वान के साथ $ चर के उपयोग को संपुटित है:

(function ($) { 

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

}(jQuery)); 
+0

तो .. $ क्यों परिभाषित नहीं किया गया है? क्या इसे अधिलेखित किया जा रहा है? – JochenJung

+2

प्रोटोटाइप जैसे अन्य जावास्क्रिप्ट पुस्तकालयों के साथ संघर्ष से बचने के लिए है। – Tapirboy

8

संभावना अपनी स्क्रिप्ट इस तरह से आरंभ नहीं किया है, तो आप Drupal.behaviors.YOURTHEMENAME उपयोग करने के लिए

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

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

} 

}; 
})(jQuery);  
+0

यह एक मेरी समस्या हल हो गई। मैं डी 7 का उपयोग कर रहा था। धन्यवाद guus –

+2

आपको '} (jQuery) का उपयोग नहीं करना चाहिए);' 'के बजाय'}) (jQuery); 'आपके कोड की अंतिम पंक्ति पर? – FLY

+0

आप पूर्ण किंवदंती, यह है! हर कोई सुनो, इस तरह आप इसे ड्रूपल में करते हैं !!!! – weaveoftheride

0

"$ कार्य नहीं है" एक बहुत ही सामान्य त्रुटि है कि आप काम करते हुए सामना कर सकते है होगा jQuery के साथ। आप नीचे दिए गए का कोई जवाब की कोशिश कर सकते हैं:

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

या

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

मूल रूप से यह हमारे कोड चलाने के लिए और JQuery के लिए $ शॉर्टकट का उपयोग करने की अनुमति देगा।

संबंधित मुद्दे