2012-04-05 20 views
5

तो मैं ऐसी वेबसाइट पर काम कर रहा हूं जो jQuery और prototype.js दोनों का उपयोग करता है, हालांकि उनके विरोधाभासी।

मैं एक निष्पक्ष बिट शोध किया और पाया कि एक ही रास्ता लोगों को ठीक इस मुद्दे है

<script> 
jQuery.noConflict(); 

// Use jQuery via jQuery(...) 
jQuery(document).ready(function(){ 
    jQuery(\"div\").hide(); 
}); 

// Use Prototype with $(...), etc. 
$('someid').hide(); 

का उपयोग करके हालांकि मैं jQuery के लिए $ बदलने के लिए नहीं करना चाहते हैं के रूप में है कि मैं इसका मतलब गए 'पूर्व लिखित कोड का एक उचित बिट संपादित करना है। क्या उन्हें विरोधाभासी रोकने और jQuery को $ के रूप में छोड़ने का कोई तरीका है?

+0

आप आप हो सकता है अगर एक ही दायरे में, $ दो अलग बातें मतलब पूछ रहे हैं? – Iznogood

+0

वह पूछ रहा है कि 'नो कॉन्फ्लिक्ट() 'का प्रोटोटाइप संस्करण है या नहीं। –

+0

[jQuery और प्रोटोटाइप संघर्ष] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/134572/jquery-prototype-conflict) – jrummell

उत्तर

9
इसके बजाय जैसे आप ( body के अंत में) को बंद करने के लिए तैयार बना सकते हैं दस्तावेज़ का उपयोग करने का

$ का उपयोग कर सकते हैं।

+0

ओह, किसी ने पहले से ही एक ही जवाब पोस्ट किया है। – rgin

+0

इस के साथ जाने का फैसला किया, हालांकि परेशान प्रोटोटाइप.जेएस अब एक त्रुटि दिखा रहा है .. –

+0

ओह वहां हम जाते हैं, इसे ठीक करते हैं, हर किसी के लिए धन्यवाद! –

6

नहीं, मैंने नहीं सुना है। कोड रूपांतरण दर्द कम करने के लिए आप इस हालांकि की तरह कुछ कर सकता है:

var j$ = jQuery.noConflict(); 

फिर आप jQuery j$ साथ $ कॉल बदल सकते थे। आप शायद एक साधारण खोज/प्रतिस्थापन कॉल का भी उपयोग कर सकते हैं।

(function($) { 
    //jQuery stuff 
    $('.elem') // $ refers to jQuery 
})(jQuery); 

अगर मैं सही ढंग

+0

मुझे लगता है कि इससे वैश्विक और स्थानीय परिवर्तनीय समस्या का कारण बन गया है ऊपर एक के साथ, धन्यवाद! –

2
(function($){ 
    // $('jquery here') 
})(jQuery); 

समारोह के अंदर सभी jQuery कोड अपने प्रश्न को समझने:

0

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

(my_old_stuff = function($){ 
    $.my_existing_function(){ 
     alert('i allready exist'); 
    }; 
)(jQuery); 

jQuery.my_existing_function(); 

यह काम करना चाहिए।

दूसरी ओर: jQuery के साथ $ को प्रतिस्थापित करना स्वचालित प्रतिस्थापन के लिए बहुत अधिक कार्य नहीं लगता है।

0

हालांकि यह काफी पुरानी पोस्ट है लेकिन मुझे वास्तव में एक ही समस्या परिदृश्य था। इसे संभालने के लिए बहुत सारे विकल्प उपलब्ध हैं। मैं प्री-लिखित कोड को नहीं छूंगा और प्रोटोटाइप जे $ का उपयोग करूंगा।

jQuery documentation

<!-- Loading jQuery before other libraries. --> 
<script src="jquery.js"></script> 
<script src="prototype.js"></script> 
<script> 

// Use full jQuery function name to reference jQuery. 
jQuery(document).ready(function() { 
    jQuery("div").hide(); 
}); 

// Use the $ variable as defined in prototype.js 
window.onload = function() { 
    var mainDiv = $("main"); 
}; 

</script> 

यहाँ से सभी विकल्प उपलब्ध हैं।

https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/