2009-03-20 6 views
1

Ich versuche, jQuery und Prototype gleichzeitig zu verwenden.jQuery und Prototyp Konflikt

Ich habe stundenlang nach Lösungen gesucht, um dieses Problem zu beheben. Die häufigste Methode, die ich fand, ist diese http://docs.jquery.com/Using_jQuery_with_Other_Libraries. Es funktionierte jedoch nicht, egal wie ich den Code "jQuery.noConflict()" platzierte.

Kann mir jemand dabei helfen?

Vielen Dank im Voraus

Hier ist mein Code

<script type="text/javascript" src="/js/swfobject.js"> 
</script> 
<script type="text/javascript" src="/js/layerswitch.js"> 
</script> 
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> 
</script> 
<script type="text/javascript"> 
    _uacct = "UA-2351815-2"; 
    urchinTracker(); 
</script> 
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"> 
</script> 
<script type="text/javascript" src="/js/fadeLinks.js"> 
</script> 
<script> 
    jQuery.noConflict(); 
    jQuery(document).ready(function($){ 
     $("#example").autocomplete(options); 
    }); 
</script> 
<script src="js/prototype.js" type="text/javascript"> 
</script> 
<script src="js/scriptaculous/scriptaculous.js" type="text/javascript"> 
</script> 
<script src="js/recommended_items.js" type="text/javascript"> 
</script> 
<script type="text/javascript"> 
//<![CDATA[ 
Event.observe(window, 'load', function() { 
    var recommended_items = new RecommendedItems('recommended_items', <?="$store_id, $gift_registry_id" ?>); 
    recommended_items.setBaseURL('<?=$site_server . SITE_STANDARD ?>'); 
<?php if (THIS_PAGE == PRODUCT_PHP) { ?> 
    recommended_items.setProduct(<?="$product_id, $category_id" ?>); 
<?php }        ?> 
    recommended_items.fetchItems(); 
}); 
//]]> 
</script> 

Antwort

3

wie so Ihre jQuery-Code Wickeln

(function($) { 

//$.noConflict(); // I don't below this is needed following this pattern 

$(function() // shorthand for $(document).ready() 
{ 
    $("#example").autocomplete(options); 
}); 


})(jQuery); 

Im Wesentlichen bezieht sich $ auf das jQuery Objekt innerhalb der Funktion

+0

Die Funktion übergeben in jQuery (Dokument) .ready ruft das jQuery-Objekt, wenn es aufgerufen wird. Daher sollte innerhalb der Funktion $ sein. – Annan

+0

Vielen Dank. Allerdings funktioniert es immer noch nicht an meinem Ende - " – Kev

+0

@Kev - Haben Sie versucht, Debugging mit Firebug? –

2

Sie können Ihren Anruf jQuery zuweisen. noConflict() zu einer Variablen und verwenden Sie diese Variable dann immer dann, wenn Sie JQuery verwenden möchten. Also:

<script> 
    var $$ = jQuery.noConflict(); 
    jQuery(document).ready(function($){ 
     $$("#example").autocomplete(options); //jQuery selector 
     alert($("#example".val()); //prototype selector 
    }); 
</script> 
+0

Vorsicht, $$ wird von prototype.js als CSS-Selektor für DOM-Elemente verwendet .. –

+0

noch besser ist das Symbol $ j, per jquery doco. – ybakos