jQuery और प्रोटोटाइप संघर्ष

वोट
27

मैं एक html पृष्ठ जहाँ मैं भी एक अकॉर्डियन मेनू जो प्रोटोटाइप का उपयोग करता है में jQuery स्वत: पूर्ण प्लगइन का उपयोग कर रहा हूँ।

वे दोनों पूरी तरह से अलग काम करते हैं लेकिन जब मैं एक ही पृष्ठ में दोनों घटकों को लागू करने की कोशिश की मैं एक त्रुटि है कि मैं समझ नहीं पा रहा किया गया मिलता है।

न आया हुआ अपवाद: [अपवाद ... घटक लौटे विफलता कोड: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMViewCSS.getComputedStyle] nsresult: 0x80004005 (NS_ERROR_FAILURE) स्थान: जे एस फ्रेम :: file: /// C: / दस्तावेज़ और सेटिंग्स /Administrator/Desktop/website/js/jquery-1.2.6.pack.js :: गुमनाम :: लाइन 11 डेटा: कोई]

मुझे पता चला फ़ाइल jQuery के साथ परस्पर विरोधी 'effects.js' जो अकॉर्डियन मेनू द्वारा प्रयोग किया जाता है। मैं एक नए संस्करण के साथ इस फ़ाइल की जगह की कोशिश की लेकिन नए अकॉर्डियन व्यवहार बाधित हो रहा है।

मेरा अनुमान है कि 'effects.js' अकॉर्डियन में इस्तेमाल फ़ाइल अकॉर्डियन डेमो उत्पादन प्राप्त करने के लिए संशोधित किया गया था है। मैं भी अन्य पुस्तकालयों के साथ संघर्ष से बचने के लिए अधिभावी तरीकों jQuery की जरूरत उपयोग करने की कोशिश और कहा कि काम नहीं किया।

मैं से अकॉर्डियन डेमो प्राप्त stickmanlabs.com

और jQuery स्वत: पूर्ण से प्राप्त किया जा सकता jQuery साइट

क्या किसी और ने इस समस्या को अनुभव किया है?

25/09/2008 को 16:05
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
10

jQuery आप से jQuery समारोह का नाम बदलने की सुविधा देता है $अन्य पुस्तकालयों के साथ नाम स्थान संघर्ष से बचने के कुछ और करने के लिए।

आप कुछ इस तरह कर सकते हैं

var J = jQuery.noConflict();

यहाँ विवरण: michaelshadle.com - jQuery के कोई संघर्ष मोड: अभी तक एक और कारण है कि यह सबसे अच्छा है

25/09/2008 को 16:16
का स्रोत उपयोगकर्ता

वोट
117

वहाँ दो संभव समाधान हैं: (Scriptaculous देशी सरणी प्रोटोटाइप गलत तरीके से विस्तार करने के लिए प्रयास कर रहा था) Scriptaculous और jQuery के एक पुराने संस्करण के साथ कोई विरोध नहीं था - पहली Scriptaculous का आपके प्रति अपग्रेड करके देखें।

यदि वह काम नहीं करता है आप का उपयोग करने की आवश्यकता होगी noConflict()(जैसा कि ऊपर उल्लेख)। हालांकि, वहाँ एक पकड़ने है। आप एक प्लगइन शामिल कर रहे हैं जब से तुम उदाहरण के लिए, एक विशेष क्रम में शामिल करने की आवश्यकता होगी:

<script src="jquery.js"></script>
<script src="jquery.autocomplete.js"></script>
<script>
  jQuery.noConflict();
  jQuery(document).ready(function($){
    $("#example").autocomplete(options);
  });
</script>
<script src="prototype.js"></script>
<script src="effects.js"></script>
<script src="accordion.js"></script>

उम्मीद है कि यह स्थिति स्पष्ट करने में मदद करता है।

25/09/2008 को 21:08
का स्रोत उपयोगकर्ता

वोट
8

मैं वास्तव में इस मामले में एक ही समय में दोनों पुस्तकालयों उपयोग करने का कारण नहीं दिख रहा है।

आप या तो प्रोटोटाइप की (अच्छी तरह से, Scriptaculous 'वास्तव में) का उपयोग कर सकते Ajax.Autocompleter और jQuery खाई, या आप jQuery के उपयोग कर सकते हैं अकॉर्डियन और प्रोटोटाइप से छुटकारा पाने के।

एक ही बार में दोनों पुस्तकालयों का उपयोग करना वास्तव में एक अच्छा विचार नहीं है, क्योंकि:

  1. वे संघर्ष हो सकते हैं।
  2. उन्हें शामिल करके दोनों आप उन दोनों को डाउनलोड करने के लिए अपने उपयोगकर्ताओं को बाध्य। कौन सा अनुकूल दृष्टिकोण बैंडविड्थ नहीं है।
27/09/2008 को 02:55
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more