एक ही पृष्ठ में JQuery और प्रोटोटाइप का उपयोग करना

वोट
32

अपने पृष्ठों के अनेक दोनों JQuery और Protoype का उपयोग करें। जब से मैं JQuery के संस्करण 1.3 में अपग्रेड इस, समस्याओं का कारण हो सकता है क्योंकि दोनों पुस्तकालयों '$' नाम के एक समारोह को परिभाषित प्रकट होता है।

JQuery एक समारोह) (noConflict जो अन्य पुस्तकालयों कि इसे का उपयोग किया जा सकता है के लिए $ के नियंत्रण त्याग देता है प्रदान करता है। तो ऐसा लगता है जैसे मैं अपने सभी पृष्ठों को इस तरह दिखेगा के माध्यम से जाने की जरूरत है:

<head>      
    <script type=text/javascript src=/obp/js/prototype.js></script>
    <script type=text/javascript src=/obp/js/jquery.js></script>
</head>

और उन्हें बदलने के लिए इस तरह देखने के लिए:

<head>      
    <script type=text/javascript src=/obp/js/prototype.js></script>
    <script type=text/javascript src=/obp/js/jquery.js></script>
    <script type=text/javascript>
        jQuery.noConflict();
        var $j = jQuery;
    </script>
</head>

मैं तो प्रोटोटाइप और '$ जे' JQuery के लिए (या 'jQuery') के लिए '$' का उपयोग करने में सक्षम होना चाहिए। मैं हर प्रासंगिक पृष्ठ में कोड की इन 2 लाइनों डुप्लिकेट करने के बारे में पूरी तरह से खुश नहीं हूँ, और उम्मीद करते हैं कि कुछ बिंदु पर किसी को उन्हें एक नया पेज में जोड़ने के लिए भूल जाते हैं की संभावना है। मैं निम्नलिखित करने के लिए सक्षम होने के लिए पसंद करते हैं

  • एक फ़ाइल j बनाएं query-noconflict.jsजो भी शामिल है jquery.jsऔर कोड के 2 लाइनों के ऊपर दिखाए गए
  • आयात jquery-noconflict.js(के बजाय jquery.jsमेरे सभी JSP / HTML पृष्ठों में)

हालांकि, मुझे यकीन है कि अगर यह किसी अन्य रूप में एक जे एस फ़ाइल शामिल करने के लिए संभव है, ढंग से मैं का वर्णन किया है नहीं कर रहा हूँ? बेशक एक वैकल्पिक समाधान उपरोक्त कोड के 2 लाइनों को जोड़ने के लिए सीधे jquery.js करने के लिए है, लेकिन अगर मुझे लगता है कि मैं इसे हर बार जब मैं JQuery उन्नयन करने के लिए याद करने की आवश्यकता होगी है।

16/01/2009 को 18:56
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


12 जवाब

वोट
5

यह प्रतीत होता है कि सबसे सरल जवाब गोली काटने, और अपने noConflict पंक्तियों को शामिल कर किया जाएगा। बेशक अपने पृष्ठों साझा किए गए शीर्ष का उपयोग नहीं कर रहे हैं, कि समाधान सबसे अच्छा नहीं हो सकता है।

16/01/2009 को 19:01
का स्रोत उपयोगकर्ता

वोट
1
<script>
    document.write(unescape('%3Cscript type="text/javascript" src="/obp/js/jquery.js"%3E%3C/script%3E'));
</script>
<script>
    jQuery.noConflict();
    var $j = jQuery;
</script>

या

var scripty = document.createElement('script');
scripty.href="/obp/js/jquery.js";
document.getElementsByTagName('head')[0].appendChild(scripty);
jQuery.noConflict();
var $j = jQuery;

संपादित करें:

मैं इस सुझाव को बाहर की कोशिश की लेकिन पिछले 2 लाइनों त्रुटि उत्पन्न

jQuery is not defined
16/01/2009 को 19:08
का स्रोत उपयोगकर्ता

वोट
3

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

16/01/2009 को 20:25
का स्रोत उपयोगकर्ता

वोट
0

अगर मैं तुम्हें थे, मैं एक जावास्क्रिप्ट में मेरी कोई विवाद कोड ड्रॉप होता फ़ाइल को शामिल की तरह आप के बारे में ऊपर मत था, और फिर कुछ प्रक्रिया यह पता लगाने जहाँ मैं इन बातों को मैं एक केंद्रीय स्थान में अपने सभी पृष्ठों में शामिल करने की ज़रूरत की स्थापना होगी । आप सीधे HTML फ़ाइलों के साथ काम कर रहे हैं और आप क्या एक दस्तावेज़ में शामिल हो जाता है के लिए templating / पटकथा क्षमता सर्वर साइड के किसी भी प्रकार नहीं है, तो, वहाँ हमेशा एक सर्वर-साइड शामिल करने की संभावना है।

किसी भी तरह से, दर्द आप अपने प्रत्येक पृष्ठ के इस समय को अद्यतन करने के लिए फिर से वापस आ जाएगा अनुभव करेंगे जब आप अपने एनालिटिक्स कोड या साइट पाद लेख को अद्यतन करने की जरूरत है।

16/01/2009 को 20:44
का स्रोत उपयोगकर्ता

वोट
1

आप jQuery पहले और उसके बाद कह सकते हैं सेट

var $j = jQuery;

प्रोटोटाइप का नियंत्रण लेने जाएगा $इस मामले में।

या, आप पूर्ण jQuery समारोह का नाम (jQuery) का उपयोग कर jQuery का उल्लेख कर सकते हैं।

20/05/2009 को 23:43
का स्रोत उपयोगकर्ता

वोट
2

तुम सिर्फ नहीं शामिल हो सकते हैं jQuery = noConflict()jquery.js स्रोत फ़ाइल में कोड? ऐसा क्यों है कि जिस तरह से परिभाषित करने की आवश्यकता होगी?

27/10/2009 को 17:53
का स्रोत उपयोगकर्ता

वोट
0

इस तरह jQuery नीचे प्रोटोटाइप का उपयोग करें:

<script type="text/javascript" src="news/jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="news/jquery.easynews.js"></script>


<script type="text/javascript" src="lb/js/prototype.js"></script>
<script type="text/javascript" src="lb/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="lb/js/lightbox.js"></script>
<link href="lb/css/lightbox.css" rel="stylesheet" type="text/css" />

इस मामले में jQuery समारोह एक समस्या बन जाएगा, ताकि आप समस्या को हल करने में इसका उपयोग कर सकते हैं:

<script type="text/javascript">
     jQuery.noConflict();
     var JQ = jQuery;//rename $ function
</script>
25/05/2010 को 09:06
का स्रोत उपयोगकर्ता

वोट
4

यह समाधान ठीक काम किया:

jQuery.noConflict();
var $j = jQuery;

अभी सेवा का उपयोग $jके स्थान पर $अपने jQuery कोड, जैसे के लिए:

$j(document).ready(function() {
    $j('#div_id').innerfade({
         // some stuff
    });
});
04/09/2010 को 09:30
का स्रोत उपयोगकर्ता

वोट
0

आप में लोड करने की आवश्यकता है अपने public/javascript/application.js

jQuery.noConflict();

var $j = jQuery;

यह भी एक अच्छा लेख है कि सहायक हो सकता है है।

JQuery और प्रोटोटाइप एक साथ काम

17/02/2011 को 11:17
का स्रोत उपयोगकर्ता

वोट
2

बस दूसरों है कि इस पर ठोकर के लिए एक नोट के रूप में। समाधान यहां बताई गई हैं (विशेष रूप से प्रोटोटाइप का उल्लेख): http://docs.jquery.com/Using_jQuery_with_Other_Libraries

05/09/2011 को 11:52
का स्रोत उपयोगकर्ता

वोट
18

वर्तमान में आप कुछ इस तरह कर सकते हैं:

<head>          
    <script type="text/javascript" src="/obp/js/prototype.js"></script>
    <script type="text/javascript" src="/obp/js/jquery.js"></script>
    <script type="text/javascript">
        var $j = jQuery.noConflict();
    </script>
</head>

फिर, jQuery के रूप में उपयोग $j()और प्रोटोटाइप के $()

30/10/2011 को 15:01
का स्रोत उपयोगकर्ता

वोट
1

आपका jquery-noconflict.jsइस तरह दिखना चाहिए (सुनिश्चित करें कि सभी एक पंक्ति में है हो सकता है):

document.write("<script type=\"text/javascript\" src=\"/obp/js/jquery.js\"></script><script type=\"text/javascript\">jQuery.noConflict();var $j = jQuery;</script>");

... और अपने में शामिल हैं (जैसा कि आप पहले ही बताया) इस तरह दिखना चाहिए की तुलना में:

<head>      
    <script type="text/javascript" src="/obp/js/prototype.js"></script>    
    <script type="text/javascript" src="/obp/js/jquery-noconflict.js"></script>
</head>

यह समाधान अपने सभी आवश्यकताओं को मुझे लगता है कि हल करती है।

10/01/2012 को 14:34
का स्रोत उपयोगकर्ता

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