2012-05-18 33 views
6

मैं एक वेब पेज में jQuery का उपयोग कर रहा हूं। इंटरनेट एक्सप्लोरर में $ का उपयोग करते समय यह ठीक काम करता है। जब Chrome या Firefox में $ संदर्भित यह त्रुटि के साथ विफल:

Uncaught ReferenceError: $ is not defined. 

स्क्रीनशॉट:

enter image description here

मेरी स्रोत कोड के साथ:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
    <script type="text/javascript"> 
     function divClick(sender, event) 
     { 
//  var chk = $(sender).find("input").first()[0]; 
     var chk = jQuery(sender).find("input").first()[0]; 
     alert("Works in ie"); 
     } 
    </script> 
</head> 
<body> 

<div onclick="divClick(this, event)"> 
    <input type="checkbox"> 
</div> 

</body> 
</html> 

नोट: ब्राउज़रों किया जा रहा है स्थानीय फाइल सिस्टम पर एक फ़ाइल को निर्देशित:

enter image description here

अद्यतन: की कोशिश की jQuery में बदलने।

अद्यतन: क्रोम jQuery फ़ाइल पाता है (जैसे कोई 404):

enter image description here

+0

जांच करें कि 'jQuery-1.7.2.min.js' एचटीएमएल को उसी फ़ोल्डर में है। '$ परिभाषित नहीं किया गया है 'एक त्रुटि है जब आप jQuery lib शामिल नहीं है। –

+0

क्या आप एक उदाहरण दे सकते हैं कि मेरे फ़ंक्शन को डोम में कैसे लपेटें? और क्लिक श्रोता को जेएस में कैसे स्थानांतरित करें? नीचे मेरा उदाहरण देखें। – Patriotec

उत्तर

7

और यह सवाल सिर्फ क्रोम और फ़ायरफ़ॉक्स में बग दस्तावेज़ के लिए यहाँ है:

Html File encoding   IE9  Chrome 
========================= ======= ====== 
Windows-1252     Works Works 
UTF-8 (without BOM)   Works Works 
UTF-8 (with BOM EFBB)  Works Works 
UTF-16 (with LE BOM FFFE) Works Fails 
UTF-16 (with BE BOM FEFF) Works Fails 

मुमकिन क्रोम (और Firefox) को लगता है कि एक अलग script फ़ाइल html फ़ाइल के रूप में एक ही एन्कोडिंग है।

क्रोम फिर यूटीएफ -16 के रूप में jquery-1.7.2.js पढ़ने की कोशिश करता है, और यह पता लगाने के लिए चौंक गया है कि फ़ाइल शुद्ध है (विंडोज -1252) कचरा।

5

चेक कि क्या jquery-1.7.2.min.js का पथ सही है। फ़ाइल डाउनलोड होने पर यह देखने के लिए फ़ायरफ़ॉक्स या क्रोम डेवलपर टूल का उपयोग करते समय आप फायरबग में देख सकते हैं। आपको अधिकतर jQuery फ़ाइल के लिए 404 मिल रहा है, जिसके कारण पृष्ठ पर $ अनिर्धारित है जो jQuery ऑब्जेक्ट के लिए उपनाम है।

0

प्रयास करें:

var chk = jQuery(sender).find("input").first()[0]; 
+0

उसमें शामिल करने के लिए प्रश्न को अपडेट किया गया। –

0

आपका समारोह एक डोम तैयार में लिपटे होने की जरूरत है:

$(function(){ 

    function divClick(sender, event) 
    { 
    var chk = $(sender).find("input").first()[0]; 
    alert("Works in ie"); 
    } 

}); 

कि समारोह आग के बाद ही पृष्ठ के लोड होते अनुमति देगा। आपकी स्क्रिप्ट को बंद HTML टैग से ठीक पहले लोड किया जाना चाहिए। सभी शीर्ष नहीं। जो पृष्ठ को एचटीएमएल और सीएसएस को तेज़ी से लोड करने की अनुमति देगा क्योंकि इसे जेएस लोड करने की प्रतीक्षा नहीं करनी पड़ेगी।

यह भी सुनिश्चित करें कि आपके पास HTML से jQuery का सही पथ है।

अंतिम बात,

इसके बजाय अगर इनलाइन HTML में आपके क्लिक श्रोता जे एस पर जाने की कोशिश हो रही है। यह इसे संभालने के लिए सिर्फ एक क्लीनर और संगठित तरीका है।

$('.clickMe').click(function(){ 
    //do stuff here 
}) 
+0

क्या आप एक उदाहरण दे सकते हैं कि * मेरे काम को एक डोम तैयार * में कैसे लपेटें? और क्लिक श्रोता को 'js' पर कैसे स्थानांतरित करें? –

+0

वे हैं वहाँ डोम तैयार है $ (समारोह() {}) यह jQuery कम हाथ संस्करण है। क्लिक करें घटना संदर्भ इस jsfiddle के लिए। http://jsfiddle.net/QgeD9/ – laymanje

0

एचटीएमएल में क्लिक करने के बजाय, मैंने जेवीरी कोड में आईडी के माध्यम से सबकुछ असाइन किया।

मुझे यकीन है कि अगर आप जानना चाहते हैं कि div चेक किया गया है या चेकबॉक्स चेक किया जाता है, तो चाहते हैं नहीं कर रहा हूँ। मैंने कोड में इनपुट चेक डाला और div को क्लिक करने पर कोड पर टिप्पणी की।

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
$(function(){ 
// $('#divid').unbind("click").click(function(){ 
$('#someid').unbind("click").click(function(){ 
if($(this).is(':checked')){ 
alert("checked"); 
}else{ 
alert("not checked"); 
} 
}); 
}); 
</script> 

</head> 
<body> 

<div id="divid"><input type="checkbox" id="someid"></div> 

</body> 
</html> 
2

आप फ़ायरफ़ॉक्स और क्रोम में जावास्क्रिप्ट के साथ इस त्रुटि प्राप्त कर सकते हैं:

Uncaught ReferenceError: $ is not defined. 

आप इस तरह jQuery शामिल हैं:

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

और अपने सर्वर जावास्क्रिप्ट सामग्री की अनुमति नहीं करने के लिए कॉन्फ़िगर किया गया है रनटाइम पर डाउनलोड और चलाने के लिए, आपको उपरोक्त त्रुटि मिलती है। पूरे त्रुटि पर एक नज़र डालें:

[blocked] The page at https://yoursite.com/blah# ran insecure content 
from http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js. 
/blah#:1 
Uncaught ReferenceError: $ is not defined 

इसका क्या अर्थ है अपने वेब सर्वर जावास्क्रिप्ट सामग्री मक्खी पर लोड करने के लिए अनुमति नहीं देता है। यह एक सुरक्षा जोखिम है क्योंकि कोई आपके लिए डाउनलोड करने के लिए बुरी चीजें इंजेक्ट कर सकता है, और अपने सर्वर का मालिक हो सकता है। इसके बाद के संस्करण की

1

कोई भी क्रोम 49 पर मेरे लिए लागू था मैं तो जैसे "application/जावास्क्रिप्ट" के रूप में प्रकार निर्दिष्ट करने के लिए किया था:

<script src="lib/jquery-1.11.3.min.js" type="application/javascript"></script> 

का उपयोग करना "पाठ/जावास्क्रिप्ट" काम नहीं कर रहा था।

+0

यह वास्तव में कई समाधान एक आकर्षण :) की तरह काम किया की कोशिश की है, लेकिन इस तरह एक ठीक नहीं पा सके –

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