2010-08-31 5 views
2
<blink> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js'></script> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js'></script> 
<script type='text/javascript' src='/lightview.js'></script> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 
<script type="text/javascript" src="/photography/js/scrollable.js"></script> 
<script> 
// Use jQuery via jQuery(...) 
jQuery(document).ready(function(){ 
jQuery("div.scrollable").hide(); 
}); 

// Use Prototype with $(...), etc. 
$('div.box').hide(); 
</script> 
</blink> 

Mon code ne fonctionne pas je ne sais pas pourquoi? un conseil?Jquery et Protoype Conflict

Répondre

4

Vous devez utiliser jQuery.noConflict() pour libérer $ retour au prototype, comme ceci:

jQuery.noConflict(); //restore $ to prototype 
jQuery(document).ready(function(){ 
    jQuery("div.scrollable").hide(); 
}); 

$('div.box').hide(); 

Bien que jQuery peut faire afficher/cacher, donc vous ne pouvez pas besoin de deux bibliothèques, en fonction de ce que vous faites (par exemple, il y a des plugins lightbox pour jQuery et des plugins scrollables pour le prototype, donc vous pouvez aller dans un sens ou dans l'autre en utilisant une seule bibliothèque pour tout).

Vous pouvez également donner un alias de la $ restauration appel, il renvoie une référence à jQuery, vous pouvez le faire:

var $j = jQuery.noConflict(); //restore $ to prototype 
$j(function(){ 
    $j("div.scrollable").hide(); 
}); 

$('div.box').hide(); 
0

Une fois que j'ai eu le même problème, en utilisant Prototype et jQuery sur la même page, et en spécifiant la fonction jQuery.noConflict(), mais mes trucs ne se sont pas fondus dedans/dehors (les trucs sautaient bizarrement et parfois seulement travaillé sur la première animation). Lorsque j'ai désactivé Prototype, mon code jQuery a fait exactement ce qu'il était censé faire. Je suis arrivé à la conclusion que jQuery et Prototype ont les mêmes noms de fonctions et que ceux-ci provoquent des conflits d'une certaine manière.

Désactivez le prototype temporairement et vérifiez si votre code jQuery fonctionne comme prévu.