TypeError: 'अपरिभाषित' कोई फ़ंक्शन नहीं है ('$ (दस्तावेज़)' का मूल्यांकन)


139
  1. मैं एक WordPress साइट का उपयोग कर रहा हूँ।
  2. मैं हेडर में इस स्क्रिप्ट को शामिल कर रहा हूं।

जब स्क्रिप्ट लोड होती है, तो मुझे यह त्रुटि मिलती है:

TypeError: 'अपरिभाषित' कोई फ़ंक्शन नहीं है ('$ (दस्तावेज़)' का मूल्यांकन)

मुझे नहीं पता कि यह क्या कारण है या इसका क्या मतलब है।

फायरबग में, मुझे यह मिलता है:

$ एक फ़ंक्शन नहीं है


4
सुनिश्चित करें कि आप अपने कस्टम स्क्रिप्ट से पहले jQuery के परिवाद को शामिल कर रहे हैं , और यह कि फायरबग के Netटैब में कोई त्रुटि नहीं है (सुनिश्चित करें कि वास्तव में jQuery लोड हो गया है)।
wansville

... हाँ, बेशक jQuery पहले हाथ में लोड हो रहा है। मुझे पूरा यकीन है कि यह एक WordPress enque मुद्दा है।
डॉक्यूम्बस

जवाबों:


239

डिफ़ॉल्ट रूप से वर्डप्रेस noConflict मोड में jQuery का उपयोग करता है । आपको jQueryचर नाम के रूप में इसका उपयोग करने की आवश्यकता है $, उदाहरण के लिए, उपयोग नहीं

jQuery(document);

के बजाय

$(document);

आप इसे आसानी से एक स्व-निष्पादित कार्य में लपेट सकते हैं ताकि $jQuery को फिर से संदर्भित किया जा सके (और वैश्विक नाम स्थान को प्रदूषित करने से बचा जाए), जैसे

(function ($) {
   $(document);
}(jQuery));

5
लिपि आवश्यक नहीं है; तुम सिर्फ कॉल कर सकते हैं jQuery(document)के बजाय $(document)भी आप चाहते हैं। यदि आप $इसके बजाय उपयोग करना चाहते हैं , तो उपरोक्त स्क्रिप्ट बस एक फ़ंक्शन बनाती है जो एक तर्क लेती है और $फिर इसे पारित करती है jQuery; संक्षेप में, फ़ंक्शन के भीतर, $jQuery को इंगित करता है जैसा कि आप अपेक्षा करेंगे
एल योबो

2
वास्तव में, क्या मैंने किया था जगह मेरी सामान्य था $(document).ready(function() { // code });अपने के स्थान पर $(document);... कि एक आकर्षण की तरह काम किया।
4

1
हां, यही मैं सुझाव दे रहा था - "फ़ंक्शन के भीतर, jQuery के लिए $ अंक, जैसा कि आप उम्मीद करेंगे"।
एल योबो

खैर, यह आपको इस तरह से पात्रों के एक जोड़े को बचाता है :) के बारे में अधिक जानकारी समारोह () {} () आत्म निष्पादित बयान का रूप
एल योबो

मुझे पता है कि यह पुराना है @ElYobo, लेकिन मुझे लगता है कि आप अपनी पोस्ट को संपादित कर सकते हैं और दूसरे उदाहरण के रूप में प्रतिक्रिया में अपनी पहली टिप्पणी से अपना उदाहरण जोड़ सकते हैं। मुझे समय बचाने के लिए धन्यवाद =)
मैनटैक्स

25

JQuery का उपयोग करें noConflict। इसने मेरे लिए चमत्कार किया

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

यही है, यह मानते हुए कि आपने अपने HTML में jQuery को शामिल किया है

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


11

इस स्निपेट को आज़माएं:

jQuery(function($) {
  // Your code.
})

इसने मेरे लिए काम किया, शायद यह आपकी भी मदद करेगा।


11

मुझे केवल क्रोम पर यह समस्या थी।

मैंने जोड़ने की कोशिश की

var $ =jQuery.noConflict();

फोन करने से पहले

$(document).ready(function () {

इसने काम कर दिया।

बहुत बहुत धन्यवाद


इसके लिए धन्यवाद। मुझे पता था कि मैं "$" के बजाय "jQuery" का उपयोग करके इस मुद्दे को हल कर सकता हूं, लेकिन मेरी समस्या यह थी कि इसे लिखा जाने पर कोमोडो एडिट्स का ट्रायल होता है, इसलिए मुझे $ h पर कोड हिन्टिंग / पूरा होने या अपने जावास्क्रिप्ट के काम करने के बीच चयन करना था। यह विधि मुझे दोनों की है।
जॉर्ज केंड्रस

6

इसके अलावा jQuery सहित, कुछ घटकों / अन्य पुस्तकालयों (जैसे jQuery UI) के बाद की जाँच करें और फिर jQuery सहित गलती से फिर से - यह jQuery को फिर से परिभाषित करेगा और उदाहरण के लिए घटक सहायकों (जैसे .datepicker) को छोड़ देगा।


4
 ;(function($){
        // your code
    })(jQuery);

अपने जेएस कोड को ऊपर बंद करने के अंदर रखें, इससे समस्या का समाधान होना चाहिए।



2

मुझे वेब डेवेलोम कैरियर में कई बार ऐसी समस्याओं का सामना करना पड़ा है। दरअसल इसका जेएस संघर्ष नहीं है, जब हम एचटीएमएल वेबसाइट को ब्राउजर में लोड करते हैं तो हमें ऐसी कोई त्रुटि नहीं होती है, लेकिन जब हम लोकलहोस्ट के माध्यम से इस प्रकार की वेबसाइट को लोड करते हैं तो हमें ऐसी समस्या का सामना करना पड़ता है। ऐसा लोकलहोस्ट की वजह से है। जब हम लोकलहोस्ट के माध्यम से स्क्रिप्ट लोड करते हैं तो यह स्क्रिप्ट को स्कैन करता है और आउटपुट प्रदान करता है। लेकिन जब हमने लोकलहोस्ट का इस्तेमाल नहीं किया। यह सिर्फ आउटपुट स्कैन करता है। उदाहरण के लिए, जब हम php कोड लोकलहोस्ट लिखते हैं और बिना होस्ट के चलते हैं तो हमें त्रुटि मिलती है। लेकिन अगर कोड सही है और होस्ट के माध्यम से चलाया जाता है, तो हमें वास्तविक आउटपुट मिलता है, और जब हम निरीक्षण तत्व का उपयोग करते हैं तो हमें आउटपुट कोड HTMl फॉर्मेट में मिलता है, लेकिन PHP फॉर्मेट में ऐसा नहीं होता क्योंकि यह कोड के प्रतिपादन के कारण होता है।

यह त्रुटि प्रदान कर रहा है। तो इन jquery कोड त्रुटि को ठीक करने के लिए एक समाधान इस विधि का उपयोग किया जा सकता है।

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

यह कोड क्या करता है 'j $' रजिस्टर करके कार्य के लिए परिवर्तनीय के रूप में रजिस्टर किया जाता है। डिफ़ॉल्ट रूप से .js फ़ाइल द्वारा केवल जावास्क्रिप्ट के रूप में पढ़ा जाता है।


1

मैं अपने पेज हेडर में jQuery को शामिल करते हुए इस समस्या में भी भाग गया, न कि यह महसूस करते हुए कि होस्ट पहले से ही पेज में अपने आप शामिल था। इसलिए अपने पृष्ठ को लाइव लोड करें और स्रोत को देखें कि क्या jQuery को लिंक किया जा रहा है।


1

दो चीज़ें:

  1. सुनिश्चित करें कि आपने अपने $ (दस्तावेज़) से पहले jQuery लाइब्रेरी जोड़ी है।
  2. तो बस पिछले टिप्पणियों के रूप में: jQuery के साथ सभी "$" बदलें।

1

इस बीच सारी स्क्रिप्ट को लपेटो ...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

कई जावास्क्रिप्ट लाइब्रेरी $ का उपयोग फंक्शन या वैरिएबल नाम के रूप में करते हैं, जैसे कि jQuery करता है। JQuery के मामले में, $ jQuery के लिए केवल एक उपनाम है, इसलिए सभी कार्यक्षमता $ का उपयोग किए बिना उपलब्ध है। यदि आपको jQuery के साथ एक और जावास्क्रिप्ट लाइब्रेरी का उपयोग करने की आवश्यकता है, तो $ .noConflict () के लिए कॉल के साथ अन्य लाइब्रेरी पर $ वापस नियंत्रण वापस करें । $ के पुराने संदर्भ jQuery के प्रारंभ के दौरान सहेजे जाते हैं; noConflict () बस उन्हें पुनर्स्थापित करता है।


1

आप स्निपेट के नीचे jQuery और $ दोनों का उपयोग कर सकते हैं। यह मेरे लिए काम किया

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});

1

आप फ़ंक्शन में $ पास कर सकते हैं ()

jQuery(document).ready(function($){

// jQuery code is in here

});

या आप की जगह ले सकता $(document);इस के साथjQuery(document);

या आप उपयोग कर सकते हैं jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.