2010-10-21 11 views
21

हैलो मैं बिंग मानचित्र प्रदर्शित करने के लिए jQuery प्लगइन फ़ैन्सीबॉक्स का उपयोग कर रहा हूं जब कोई टेक्स्टबॉक्स में कोई पता दर्ज करता है और उसके बगल में सबमिट बटन हिट करता है। और एक फैंक्सबॉक्स लोड किया गया है और उस पते के लिए एक नक्शा प्रदर्शित होता है। यह मेरे आवेदन के साथ अच्छी तरह से काम कर रहा है, लेकिन समस्या यह है कि यह केवल एक पृष्ठ पर और दूसरे पर अच्छी तरह से काम कर रहा है, जब मैं इसे लोड करता हूं, तो यह मुझे एक त्रुटि दे रहा है कि फैंसीबॉक्स एक समारोह नहीं है। मुझे त्रुटि कंसोल में और फ़ायरबग कंसोल में यह त्रुटि दिखाई देती है। मुझे यकीन नहीं है कि समस्या क्या हो सकती है। एक ही कोड दूसरे पृष्ठ में काम करता है, लेकिन यह इस पर नहीं है?फ़ैन्सीबॉक्स फ़ंक्शन

$("<a href=\"#showmap\">Map</a>").fancybox is not a function 

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

यह मेरा कोड

abbr है: बस एक पाठ बिट है। मेरे द्वारा चुने गए उपयोगकर्ता के आधार पर अलग-अलग divs हैं। और प्रत्येक div के अपने नियंत्रण होंगे, जो उस पाठ से शुरू होगा और मैप्रेसल्ट्स, डीसीवेलैट, डीकवेलॉन इत्यादि जैसे

पूर्व: abbr >> पूर्व और फिर आईडी पूर्व-पूर्ववर्ती होंगे, eastdecValLat, eastdecValLon आदि

function showMapFancybox(abbr){ 
    var abbr; 
    $('#'+abbr+'mapresults').hide(); 
    $('<a href="#showmap">Map</a>').fancybox({ 
     overlayShow: true, 
     onClosed: function() { 
      $('#'+abbr+'mapresults').show(); 
      map_latdec = $('#decValLat').attr('value'); 
      map_longdec = $('#decValLon').attr('value'); 
      map_latdeg = $('#degValLat').attr('value'); 
      map_longdeg = $('#degValLon').attr('value'); 

      $('#'+abbr+'decValLatsub').val(map_latdec); 
      $('#'+abbr+'decValLonsub').val(map_longdec); 
      $('#'+abbr+'degValLatsub').val(map_latdeg+'N'); 
      $('#'+abbr+'degValLonsub').val(map_longdeg+'W'); 
     } 
    }).click();  
}; 
+1

आप abbr को फिर से परिभाषित क्यों करेंगे क्योंकि यह आपके कार्य का तर्क है? – Harmen

+0

मैंने अभी प्रश्न संपादित किया है। आशा है कि ये आपकी मदद करेगा। – macha

+0

यह मुझे लगता है कि जिस पृष्ठ पर यह काम नहीं कर रहा है वह जावास्क्रिप्ट फ़ाइल गायब है जो 'fancybox' को परिभाषित करता है। क्या आपने यह सुनिश्चित करने के लिए जांच की है कि आप दोनों पृष्ठों पर एक ही जावास्क्रिप्ट फाइलें शामिल कर रहे हैं? – andrewle

उत्तर

52

मुझे पहले से ही इस प्रकार की त्रुटियां थीं क्योंकि मैं प्लगइन आयात के बाद jQuery को पुनः लोड कर रहा था, जांचें कि आप गलती से jquery को पुनः आयात नहीं करते हैं (कभी-कभी jQuery टूल जैसे पैकेज में शामिल होते हैं)।

+1

मैं कैसे जांचूं कि मैं पुनः आयात कर रहा हूं या नहीं ?? मुझे लगता है कि समस्या – macha

+1

jQuery स्रोत कोड के कई उदाहरणों की तलाश करें। – Moses

+0

क्या हमारे पास कई उदाहरण देखने के लिए एक तरीका है, जो अनैच्छिक रूप से हो सकता है ?? अभी तक मुझे यकीन है कि मैं केवल एक बार प्लगइन और jQquery स्रोत दोनों लोड कर रहा हूं। यह मेरे डिफ़ॉल्ट लेआउट में है। लेकिन मैंने कहीं और पढ़ा है, यह समस्या हो सकती है। – macha

2

हैं "fancybox" के रूप में एक समारोह में मौजूद नहीं है, यह संभावना है कि या तो jQuery स्रोत या प्लगइन स्रोत अपने पेज में लोड करने के लिए असफल रहे हैं है। सुनिश्चित करें कि पथ, फ़ाइल नाम, और एक्सटेंशन सभी सही हैं।

संपादित करें: सुनिश्चित करें कि आप किसी भी प्लगइन से लिंक करने से पहले jQuery स्रोत से लिंक करते हैं। यदि jQuery से पहले आपके एचटीएमएल में प्लगइन लोड हो गया है, तो प्लगइन विफल हो जाता है।

3

आपको आसान fancybox प्लगइन से पहले easing.js और mousewheel.js जैसे एक्सटेंशन लोड करने की आवश्यकता है। यह समस्या हल करता है।

+1

धन्यवाद आदमी के साथ है। यह मेरी समस्या का समाधान किया। – aton1004

+0

मेरी समस्या का समाधान नहीं किया - मेरा पृष्ठ स्पष्ट रूप से fancybox जेएस फ़ाइल लोड करता है लेकिन अभी भी त्रुटि फेंकता है "fancybox एक फ़ंक्शन नहीं है"। – jimiayler

+0

@jimiayler क्या आपने प्लगइन के बाद इसे लोड किया था? – doublejosh

0

यदि आप एक प्लगइन का उपयोग कर रहे हैं जिसमें आपके हेडर टैग में JQuery शामिल है, तो यह समस्या उत्पन्न हो सकती है। मैंने हाल ही में अपने ब्लॉग में 'द स्लाइडर' जोड़ा, मेरे सभी फैंसीबॉक्स ने काम करना बंद कर दिया। यद्यपि इस स्थिति के लिए आसान फिक्स हैं। मूल रूप से, प्लगइन निर्देशिका पर जाएं, jquery पर कॉल की खोज करें और इसका उपयोग सशर्त बनाएं। यदि आप इसके कार्यान्वयन को देखना चाहते हैं तो मैंने स्क्रीन कैप्चर के साथ blog about it किया था।

1

मेरे मामले में यह jQuery.noConflict() था; एक और jQuery प्लगइन में पंक्ति ... जब मैंने सब कुछ काम करने के लिए शुरू कर दिया।

2

मुझे बस यह समस्या थी, ऐसा लगता है कि jQuery के कुछ संस्करण फ़ैन्सीबॉक्स के संस्करणों के साथ संगत नहीं हैं, उदाहरण के लिए फ़ैन्सीबॉक्स 1.3.4 1.7 से नीचे jQuery संस्करणों के साथ छोटी है और यह 1.8 से अधिक संस्करण पर काम नहीं करता है।

0

मुझे यह समस्या मेरी वर्डप्रेस वेबसाइट पर मिली और मुझे पता चला कि यह समस्या fancybox.js के कारण हुई थी जो मैंने दो प्लगइन से कोड में दो बार प्रस्तुत किया था। तो अपना कोड जांचें और एक स्रोत से लोड करना सुनिश्चित करें।

0

संभावित समाधान:

1) क्या आपने पहले से ही jQuery लोड किया है? यदि नहीं, तो $ कमांड शुरू होने से पहले इसे लोड करें।

2) जांचें, शायद आप पृष्ठ के दौरान कई बार jquery लाइब्रेरी (.js) लोड कर रहे हैं। केवल एक लोड करने का प्रयास करें।

3) फ़ाइल के अंत में, आप इस जावास्क्रिप्ट कमांड को निष्पादित कर सकते हैं: $ = jQuery.noConflict(); और यह हल हो सकता है। यदि नहीं, तो $ के बजाय कहीं भी jQuery शब्द का उपयोग करें, और यह भी काम करेगा।