बिना संदर्भ संदर्भ: $ परिभाषित नहीं किया गया है?


657

यह कोड कैसे आता है a

बिना संदर्भ संदर्भ: $ परिभाषित नहीं है

जब यह पहले ठीक था?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

टैब में परिणाम अब बंद नहीं होते हैं।

jQuery को शीर्ष लेख में संदर्भित किया गया है:

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

<स्क्रिप्ट भाषा = "जावास्क्रिप्ट" प्रकार = "पाठ / जावास्क्रिप्ट" src = "<? php गूंज get_option ('साइटर्ल')?> / js / jquery-1.2.6.min.js" </ script> इसे लें? टॉप
कप्तानी

मेरे मामले में, JQuery पाद लेख अनुभाग पर था, इसलिए JS फ़ंक्शन को पहले बुलाया गया था।
डैनियल बेल्ट्रामी

क्या इससे आपके सवाल का जवाब मिलता है? संदर्भ: $ परिभाषित नहीं किया गया है
ब्रायन

जवाबों:


687

आपको सबसे पहले jquery लिपियों का संदर्भ देना चाहिए।

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>

27
बस यह सुनिश्चित करने के लिए कि यह स्पष्ट है: आप स्क्रिप्ट संदर्भ को jquery-ui से पहले jquery स्क्रिप्ट में नहीं डाल सकते। यही मेरे लिए समस्या तय है: पहले jquery-xxxmin.js, फिर jquery-ui-xxxxxx.js।
वैग्नर दा सिल्वा

26
2 साल बाद, अभी भी जवाब "टिक नहीं हुआ है") यह आलेख इस एक और 4 सामान्य मामलों का वर्णन करता है जब यह त्रुटि होती है।
उज्बोन

2
@Uzbekjon कि यह मेरे लिए हल। मेरी एकHTML फाइल में स्क्रिप्ट का रास्ता गलत था ।
एडम जेन्सेन

@ जेरेमी, बहुत बहुत धन्यवाद। इसे किसी भी आंशिक दृश्य (mvc) से पहले रखें ताकि यह आंशिक रूप से किसी भी स्क्रिप्ट के लिए उपलब्ध हो।
एंड्रयू डे

1
@Uzbekjon को अब लगभग 10 साल हो गए हैं और यह अभी भी टिक नहीं पाया है। लेख लिंक प्रदान करने के लिए धन्यवाद।
मोडो

235

JQuery जावास्क्रिप्ट को शामिल करने से पहले आप तैयार फ़ंक्शन को कॉल कर रहे हैं। संदर्भ jQuery पहले।


30
@ रामशरण वास्तव में, यह सही उत्तर है। समस्या को हल करने के लिए आपको किसी और चीज़ की आवश्यकता नहीं है।
डेरेक 會 會

हाँ। यह मेरी समस्या थी। बस मेरे js फ़ाइल को संदर्भित करने के बाद jquery AFTER था। डी 'ओह!
dogonaroof

मेरे मामले में मुझे मुख्य स्क्रिप्ट को <script src = "/ js / jquery-1.2.6.min.js" defer> </ script> से
निकालना पड़ा

123

यही मेरे लिए इसका हल है। मूल रूप से मैंने Google पर जाकर अपने CDN पृष्ठ पर jQuery के लिए उनके सुझाए गए स्निपेट को कॉपी और पेस्ट किया:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

टुकड़ा शामिल नहीं है HTTP:या HTTPS:में srcविशेषता लेकिन अपने ब्राउज़र, फ़ायर्फ़ॉक्स, यह आवश्यक तो मैं यह करने के लिए बदल: संपादित करें: इस में अच्छी तरह से गूगल क्रोम के साथ मेरे लिए काम किया

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

फिर काम हुआ।


13
Google स्निपेट / उदाहरण को सख्ती से बोलना सही है - उनकी src विशेषता एक प्रोटोकॉल कम URL है जिसका अर्थ है कि ब्राउज़र को कॉलिंग पृष्ठ के प्रोटोकॉल (HTTP / HTTPS) का उपयोग करना चाहिए। Paulirish.com/2010/the-protocol-relative-url देखें । मिश्रित सामग्री चेतावनी से बचने के लिए यह सबसे अच्छा अभ्यास है यदि आपका पेज कभी एसएसएल पर परोसा जाता है और स्क्रिप्ट नहीं होती है।
19

12
यहां एक सामान्य समस्या, संभावना है, जब प्रोटोकॉल-रिश्तेदार URL का उपयोग विकास के दौरान किया जाता है, और एक धूप के दिन आप एक स्थानीय फ़ाइल से एक पृष्ठ लोड करने का प्रयास करते हैं। आपका ब्राउज़र आशावादी रूप से लोड करने का प्रयास करेगा file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.jsऔर आपको आश्चर्य होगा कि यह नेटवर्क कंसोल में क्यों नहीं दिखता है।
पीटर एन्स

धन्यवाद @PieterEnnes, मेरे लिए बिल्कुल यही मामला था। उत्तर देने वाले को भी धन्यवाद!
jwg

43

यदि jQuery प्लगइन को ब्राउज़र में लोड करने से पहले आपकी कस्टम स्क्रिप्ट भरी हुई है तो इस प्रकार की समस्या हो सकती है। इसलिए, jQuery प्लगइन को कॉल करने के बाद हमेशा अपना स्वयं का जावास्क्रिप्ट या jQuery कोड रखें ताकि इसके लिए समाधान हो:

पहले GoogleApis पर होस्ट की गई jQuery फ़ाइल या एक स्थानीय jQuery फ़ाइल से लिंक जोड़ें, जिसे आप http://jquery.com/download/ से डाउनलोड करेंगे और अपने सर्वर पर होस्ट करेंगे :

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

या jQuery के लिए किसी भी प्लगइन। फिर अपनी कस्टम स्क्रिप्ट फ़ाइल लिंक या कोड डालें:

<script src="js/custom.js" type="text/javascript"></script>

3
If your custom script is loaded before the jQuery plugin is loaded to the browser then this type of problem may occur सही उत्तर .. मेरे मामले में स्क्रिप्ट पाद लेख में थी
प्रतिध्वनि

41

मेरे मामले में मैं अपनी .jsफ़ाइल को jQuery स्क्रिप्ट लिंक से पहले डाल रहा था , .jsफ़ाइल को jQuery स्क्रिप्ट लिंक के बाद डालने से मेरी समस्या हल हो गई।

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>

बस मेरा jschart ठीक करने के लिए इसका इस्तेमाल किया।
indofraiser

इस समस्या को ठीक किया गया, .js फ़ाइल को jQuery स्क्रिप्ट लिंक से पहले रखा जाना चाहिए।
वैज्ञानिक विधि

27

ठीक है, मेरी समस्या अलग थी - यह क्रोम में दस्तावेज़ सुरक्षा मॉडल था ।

यहां जवाबों को देखते हुए, यह स्पष्ट था कि मैं किसी भी तरह से $(document).ready()आदि कार्यों को कॉल करने से पहले अपनी jquery फ़ाइलों को लोड नहीं कर रहा था । हालांकि, वे सभी सही स्थिति में थे।

मेरे मामले में, यह इसलिए था क्योंकि मैं सामग्री को एक सुरक्षित HTTPS कनेक्शन पर एक्सेस कर रहा था, जबकि पेज Google से CDN होस्ट किए गए डेटा को डाउनलोड करने का प्रयास कर रहा था, आदि समाधान उन्हें स्थानीय रूप से संग्रहीत करना था और फिर सीधे शामिल करना था बजाय सीधे। हर बार सी.डी.एन.

संपादित करें : ऐसा करने का दूसरा तरीका सभी सीडीएन-होस्ट किए गए सामान को https: // के बजाय http: // के साथ लिंक करना है - फिर मॉडल शिकायत नहीं करता है।


5
इसके अलावा, ध्यान दें कि आप प्रोटोकॉल को लिंक से बाहर छोड़ सकते हैं और यह संदर्भ के आधार पर उपयुक्त एक का चयन करेगा (http और https दोनों मौजूद हैं)। देखें stackoverflow.com/a/3622615/4332
एड्रियन Mouat

हां। इसने मेरी समस्या हल कर दी, मैं इस l // cdnjs.cloudflare.com / ajax / libs / jquery / 1.12.0 / jquery.min.js´ जैसी एक यूआरएल से स्क्रिप्ट लोड कर रहा था। Great cdnjs का उपयोग करना ... ´ महान काम करता है
user9869932

25

स्क्रिप्ट शुरू करने से पहले पुस्तकालय जोड़ें। आप इसे शुरू करने के लिए इनमें से कोई भी सीडीएन जोड़ सकते हैं ।

गूगल:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

माइक्रोसॉफ्ट

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

jQuery

यदि आप कोई अन्य Jquery cdn संस्करण चाहते हैं तो इस लिंक की जाँच करें

इसके बाद:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

Wordpress:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>

19

यदि यह वर्डप्रेस में है, तो इसे बदलने की आवश्यकता हो सकती है

$(document).ready(function() {

सेवा

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

या जोड़ें

var $ = jQuery;

इससे पहले

$(document).ready(function() {

19

मुझे ठीक वही समस्या थी और ऊपर दिए गए इन समाधानों में से किसी ने भी मदद नहीं की। हालाँकि, मैंने .cssफाइलों के बाद सिर्फ फाइलों को जोड़ा .jsऔर समस्या चमत्कारिक रूप से गायब हो गई। उम्मीद है की यह मदद करेगा।


13
सबसे पहले, बेहतर पेज रेंडरिंग प्रदर्शन के लिए आपको हमेशा जेएस फाइलों से पहले CSS फाइलों को लिंक करना चाहिए। दूसरा, सीएसएस और जेएस फाइलों के आदेश का वर्तमान उद्धरण में कोई प्रभाव नहीं होना चाहिए।
उज्बोन

12
"आपकी समस्या क्या है आपकी समस्या को ठीक नहीं करना चाहिए और आपको वह नहीं करना चाहिए जो आपकी समस्या को ठीक करता है।"
एंड्रयू

15

मैं अपनी स्क्रिप्ट को अतुल्यकालिक बनाने की कोशिश करना चाहता था । तब मैं इसके बारे में भूल गया और जब मैं लाइव [कस्टम] .js फ़ाइल को jQuery से पहले केवल 50% लोड किया ।js।

इसलिए मैं बदल गया

<script async src="js/script.js"></script>

सेवा

<script src="js/script.js"></script>

14

मेरे मामले में मेरे पास यह संदर्भ था क्योंकि स्क्रिप्ट कॉल का क्रम गलत था। क्रम बदलकर हल किया:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

सेवा

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>

1
अधिकतर यह समस्या मुझे तब भी हुई जब एक संदर्भ त्रुटि '$' के लिए होती है
डिपक

8

मेरे पास एक ही समस्या थी, और मैंने अपने कोड में सभी जावास्क्रिप्ट कोडों के शीर्ष पर jQuery डालकर हल किया।

कुछ इस तरह:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

आशा है कि भविष्य में किसी एक की मदद कर सकते हैं।


8

ready()JQuery जावास्क्रिप्ट को शामिल करने से पहले आप फ़ंक्शन को कॉल कर रहे हैं । संदर्भ jQuery पहले।

यदि आप ASP.NET MVC में हैं, तो आप यह निर्दिष्ट कर सकते हैं कि आपका जेएस कोड कब प्रदान किया जाना चाहिए:

1, अपने में page.cshtmlरैप अपने <script>एक वर्ग में टैग, और यह एक नाम देना, उपयोग करने के लिए आम नाम 'स्क्रिप्ट' है:

@section scripts {
    <script>
        // JS code...
    </script>
}

2, अपने _Layout.cshtmlपेज ऐड में @RenderSection("Scripts", required: false), Jquery स्रोत का संदर्भ देने के बाद इसे रखना सुनिश्चित करें, इससे आपका JS कोड Jquery की तुलना में बाद में रेंडर हो जाएगा।


6

यदि आप .Net में ऐसा कर रहे हैं और स्क्रिप्ट फ़ाइल ठीक से संदर्भित है और आप jQuery ठीक लग रहे हैं, तो सुनिश्चित करें कि आपके उपयोगकर्ताओं के पास स्क्रिप्ट फ़ाइल तक पहुँच है। जिस प्रोजेक्ट पर मैं काम कर रहा था (एक सहकर्मी) उनके वेब.कॉन्फ़िग में अनाम उपयोगकर्ताओं तक पहुँच से वंचित था। जिस पृष्ठ पर मैं काम कर रहा था वह अनाम उपयोगकर्ताओं के लिए सुलभ था, इसलिए उनके पास स्क्रिप्ट फ़ाइल तक पहुंच नहीं थी। निम्नलिखित को web.config में छोड़ दिया और दुनिया में सब सही था:

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

6

मेरे मामले में यह एक टाइपो था, मैं एक बैकस्लैश को भूल गया और स्रोत को गलत तरीके से संदर्भित कर रहा था।

इससे पहले src="/scripts/jquery.js"

उपरांत    src="scripts/jquery.js"


5

स्रोत फ़ाइल jquery-1.2.6.min.jsको नहीं कहा जाता है jQuery कमांड $()को पहले की तुलना में निष्पादित किया जाता है <..src='jquery-1.2.6.min.js'>

कृपया <.. src="/js/jquery-1.2.6.min.js..">पहले भागें और सुनिश्चित करें कि src का रास्ता सही है, फिर jquery कमांड निष्पादित करें

$(document).ready(function() 

5

यह मेरे साथ पहले हुआ था।

कारण यह था कि मैं एक JS के साथ एक Webview में android कनेक्ट कर रहा हूँ। और मैंने बिना उद्धरण के एक पैरामीटर भेजा।

js.sayHello(hello);

और जब मैंने इसे बदल दिया

js.sayHello('hello');

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


मुझे नहीं पता कि उद्धरण के बिना क्या पैरामीटर का मतलब है ... ऐसा लगता है जैसे आपके पास एक संदर्भ त्रुटि थी।
एलुआन हदद

मुझे फ़्रीमार्कर में एक समस्या थी और इसका कारण एकल उद्धरणों का अभाव था, इसलिए मूल्य को एक स्ट्रिंग की तरह नहीं बल्कि एक परिवर्तन के रूप में माना जाता था
Torina

4

आपकी जावास्क्रिप्ट फाइल गायब है इसलिए यह त्रुटि हुई। बस <head>टैग के अंदर जावास्क्रिप्ट फ़ाइल जोड़ें । उदाहरण देखें:

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

या टैग में निम्नलिखित कोड जोड़ें:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

4

त्रुटि निम्नलिखित दो परिदृश्यों में भी होगी।

  1. @ फ़ाइल स्क्रिप्ट तत्व HTML फ़ाइल से गायब है
  2. DOM तत्वों को एक्सेस करने में त्रुटि। उदाहरण के लिए DOM तत्व की पहुँच $ ("js-toggle") के बजाय $ ("js-toggle") के रूप में उल्लिखित है। दरअसल पीरियड गायब है

तो 3 चीजों का पालन किया जाना चाहिए - आवश्यक स्क्रिप्ट की जांच की जाती है, यह जांचें कि क्या यह आवश्यक क्रम में जोड़ा गया है और आपके जावा स्क्रिप्ट में तीसरा वाक्यविन्यास त्रुटियां हैं।


हाँ। और आईडी विशेषताओं के लिए $ ('# someDiv')
cagcak

3

रवींद्र! मैंने अपने टैग्स में उद्धरणों को मिलाया था जिससे jquery संदर्भ टूट गया था। Chrome में एक निरीक्षण करने से मुझे यह देखने की अनुमति मिली कि फ़ाइल ठीक से लिंक नहीं की गई थी।


3

मेरे मामले में मैं इसे शामिल करना भूल गया:

 <script src ="jquery-2.1.1.js"></script>

पहले मैं सिर्फ jquery- मोबाइल को शामिल कर रहा था जो इस त्रुटि का कारण बन रहा था।


3

मैंने सही सामग्री को इंगित करने के लिए स्क्रिप्ट टैग को संशोधित किया और संपादक में सही होने के लिए स्क्रिप्ट के आदेश को बदल दिया। लेकिन बदलाव को बचाने के लिए पूरी तरह से भूल गया।


2

मेरे पास एक समान मुद्दा था और यह इसलिए था क्योंकि मुझे स्टाइल शीट लिंक पर एक बंद> याद आ रही थी।


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

मेरे पास समान मुद्दा है, और आप जानते हैं कि यह क्या है, क्योंकि जब मैं एंड्रॉइड डिवाइस वेबव्यू में परीक्षण करता हूं तो यह नेटवर्क डिस्कनेक्ट हो जाता है और मुझे इसका एहसास नहीं होता है, और स्थानीय जेएस को लोड करने में कोई समस्या नहीं है क्योंकि इसे नेटवर्क की आवश्यकता नहीं है। यह हास्यास्पद लगता है लेकिन यह पता लगाने के लिए मेरा ~ 1 घंटा बर्बाद होता है।


2

आपने jQuery लाइब्रेरी का संदर्भ नहीं दिया है।

आपको अपने HTML में इसके समान एक पंक्ति शामिल करनी होगी:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

2

मेरा भी ऐसा ही मुद्दा था। मेरा परीक्षण सर्वर "http" के साथ ठीक काम कर रहा था। हालांकि यह उत्पादन में असफल रहा जिसमें एसएसएल था।

इस प्रकार उत्पादन में, मैंने "HTTP" के बजाय "HTPPS" जोड़ा और परीक्षण में, मैंने इसे "HTTP" के रूप में रखा।

परीक्षा:

wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

उत्पादन:

wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

आशा है कि यह किसी ऐसे व्यक्ति की मदद करेगा जो वर्डप्रेस पर काम कर रहा है।


1

अजीब बात है, मेरी समस्या PHP से आ रही थी।

REST API कॉल विफल हो रही थी, और यह बाद में पुस्तकालयों की लोडिंग को तोड़ रही थी। चूंकि विफलता REST कॉल से थी, इसलिए यह मुझे php संकलन त्रुटि नहीं दे रही थी।

इसे एक विकल्प के रूप में भी रखें, यदि लोडिंग जेकरी ठीक लगता है।


1

मेरे पास यह मुद्दा था, जब मैं अपने मोबाइल हॉटस्पॉट के माध्यम से इंटरनेट ब्राउज़ कर रहा था। यह चित्रों को संपीड़ित भी कर रहा था और बॉडी टैग के निचले भाग में निम्न स्क्रिप्ट जोड़ा गया था

<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>

जब मैं उचित वाईफाई कनेक्शन से जुड़ा, तो सभी मेरे लिए काम खोजने लगते हैं। आशा है कि यह किसी की मदद करेंगे।


1

यह भी हो सकता है, अगर नेटवर्क समस्या है। जिसका अर्थ है, भले ही "jquery स्क्रिप्ट" जगह में हैं, और उपयोग करने से पहले शामिल हैं, क्योंकि पृष्ठ लोड करने के समय, jquery-script सुलभ नहीं हैं, इसलिए "$" की परिभाषाएँ इस प्रकार मानी जाती हैं "अपरिभाषित संदर्भ"।

TEST / DEBUG PURPOSES :: के लिए आप ब्राउज़र पर "jquery-script" url का उपयोग करने का प्रयास कर सकते हैं। यदि यह पहुंच योग्य है, तो आपका पृष्ठ ठीक से लोड होना चाहिए, अन्यथा यह उक्त त्रुटि (या अन्य स्क्रिप्ट प्रासंगिक त्रुटियों) को दिखाएगा। उदाहरण - http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js ब्राउज़र (या ब्राउज़र संदर्भ रुख) पर पहुंच योग्य होना चाहिए।

मुझे इसी तरह की समस्या थी, जिसमें मैं अपने विंडोज़-होस्ट-ब्राउज़र में html-पेज (स्क्रिप्ट का उपयोग करके) लोड करने में सक्षम था, लेकिन vm-ubuntu में लोड करने में सक्षम नहीं था। नेटवर्क समस्या को हल करते हुए, समस्या हल हो गई।


0
var $ = jQuery;
jQuery(document).ready(function($){

1
यह बिल्कुल जवाब नहीं है। आपको कुछ स्पष्टीकरण जोड़ना होगा।
जेमलेयर

यह आपके लिए एक समाधान है जिसका Wordpressउल्लेख करना चाहिए।
हेक्सोडस

आपने मेरा दिन बचाया। वर्डप्रेस में करने के लिए संघर्ष कर रहा था और कोई नहीं लेकिन इस समाधान ने एक आकर्षण की तरह काम किया।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.