2009-03-20 15 views
1

J'essaie d'utiliser à la fois jQuery et Prototype en même temps.Conflit jQuery et Prototype

J'ai passé des heures et des heures à chercher des solutions pour résoudre ce problème. La méthode la plus commune que j'ai trouvée est http://docs.jquery.com/Using_jQuery_with_Other_Libraries. Cependant, cela n'a pas fonctionné, peu importe comment je place le code "jQuery.noConflict()".

Quelqu'un peut-il m'aider avec ceci?

Merci à l'avance

Voici mon 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> 

Répondre

3

Enveloppez votre code jQuery comme si

(function($) { 

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

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


})(jQuery); 

En substance, $ fait référence à l'objet jQuery à l'intérieur de la fonction

+0

La fonction transmise dans jQuery (document) .ready récupère l'objet jQuery lorsqu'il est appelé. Par conséquent, à l'intérieur de la fonction, il devrait être $. – Annan

+0

Merci beaucoup. Cependant, ça ne marche toujours pas sur ma fin - - " – Kev

+0

@Kev - Avez-vous essayé le débogage avec Firebug? –

2

Vous pouvez attribuer votre appel à jQuery. noConflict() à une variable, puis utilisez cette variable lorsque vous souhaitez utiliser JQuery. Donc:

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

attention, $$ est utilisé par prototype.js comme un sélecteur CSS pour les éléments DOM –

+0

mieux encore est le symbole $ j, par le doco jquery. – ybakos