2013-03-27 13 views
28

मैं jQuery litebox का उपयोग कर रहा हूं। जेएस और सीएसएस फाइलों को जोड़ने के बाद मुझे यह त्रुटि मिली टाइपर:

$(...).on is not a function at this line in js file           
"return $('body').on('click',  
'a[rel^=lightbox], area[rel^=lightbox]', function(e) {" 

क्या कोई मेरी समस्या को समझने में मेरी सहायता कर सकता है?

मैं केकपीएचपी 1.3 में यह कार्यान्वयन कर रहा हूं।

+4

आप jQuery संस्करण 1.7 या नए शामिल किया है, और आप रैप किया document.ready में आपका कोड सही है? – adeneo

+0

हां मैंने jquery जोड़ा है 1.7 – user1613870

+0

मैं अभी भी लाइटबॉक्स के लिए किसी भी कोड को लागू करता हूं, अगर मैं सिर्फ जेएस और सीएसएस फाइलें जोड़ता हूं तो मुझे यह त्रुटि मिली है – user1613870

उत्तर

26

इसका सामान्य कारण है आप भी प्रोटोटाइप, MooTools, या कुछ अन्य पुस्तकालय कि $ प्रतीक का उपयोग करता है का उपयोग कर रहे हैं कि, और आप jQuery के बाद कि पुस्तकालय सहित रहे हैं, और इतना है कि पुस्तकालय है " जीतना "($ खुद के लिए लेना)। तो $ का वापसी मूल्य एक jQuery उदाहरण नहीं है, और इसलिए इसमें jQuery विधियां नहीं हैं (जैसे on)।

आप उन अन्य पुस्तकालयों के साथ jQuery का उपयोग कर सकते हैं, लेकिन अगर आप ऐसा करेंगे, तो आप अपने उर्फ ​​$, जैसे बजाय jQuery प्रतीक का उपयोग करने के लिए है:

jQuery('body').on(...); 

और अगर आप इस जोड़ने यह आमतौर पर सबसे अच्छा है के तुरंत बाद jQuery सहित अपने script टैग, अन्य पुस्तकालय सहित एक से पहले:

<script>jQuery.noConflict();</script> 

... की आवश्यकता नहीं हालांकि यह है यदि आप अन्य संगठनों लोड jQuery के बाद एर लाइब्रेरी (यह है कि अगर आप पहले दूसरी लाइब्रेरी लोड करते हैं)।

एक ही पृष्ठ पर एकाधिक पूर्ण-कार्य डीओएम मैनिपुलेशन पुस्तकालयों का उपयोग करना आदर्श नहीं है, हालांकि, केवल पृष्ठ वजन के संदर्भ में। तो यदि आप केवल प्रोटोटाइप/म्यूटूल/जो कुछ भी या सिर्फ jQuery के साथ रह सकते हैं, तो यह आमतौर पर बेहतर होता है।

+0

क्रॉउडर, आपके दिशानिर्देशों के लिए धन्यवाद, मैं jquery से पहले कोई लाइब्रेरी नहीं जोड़ रहा हूं, सभी लाइब्रेरी jquery लाइब्रेरी के बाद जोड़े गए हैं । मैं इस तकनीक का उपयोग कर रहा हूं सीएसएस ('त्वचा/lightbox.css', 'स्टाइलशीट'); ?> और स्क्रिप्ट (सरणी ('libs/lightbox'), सरणी ('इनलाइन' => झूठी)); ?> – user1613870

+1

@ user1613870: जैसा कि मैंने कहा, यदि आप एक और लाइब्रेरी ** ** ** jQuery (प्रोटोटाइप या म्यूटूल की तरह) के बाद, आपको यह समस्या होगी। (यदि आप उन्हें * पहले * में नहीं रखते हैं, यदि आपने उन्हें * पहले * किया था, तो आपको एक अलग समस्या होगी।) क्या आप प्रोटोटाइप या म्यूटूल का उपयोग कर रहे हैं? –

49

समस्या हो सकती है यदि आप jQuery के पुराने संस्करण का उपयोग कर रहे हैं।

(function($) { 
//my jquery 
})(jQuery); 
8
यह समस्या

'ऑन' के 'जी' विधि है (< 1.7) तो आप "चालू" के बजाय "बाइंड" का उपयोग कर सकते हैं। यह केवल तभी काम करेगा जब आप पुराने संस्करण का उपयोग कर रहे हों, क्योंकि jQuery 3.0 के रूप में, "बाइंड" को बहिष्कृत कर दिया गया है।

3

आप jQuery के पुराने संस्करण का उपयोग कर रहे हैं, तो: क्योंकि jQuery के पुराने संस्करणों के बजाय हल किया जाता है, मेरे मामले में, मेरे jQuery encapsulating द्वारा

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