2009-06-09 11 views
1

Prototype de J'utilise une combinaison de prototype et script.aculo.us pour mettre en œuvre un effet lightbox dans mes asp.net page.I ont également jquery inclus dans mes page.I ont plusieurs balises DIV dans ma page, mais après y compris le fichier prototype dans ma tête de la page, je ne suis pas capable de lire les divs dans mon javascript en utilisant jqueryjQuery conflit

var div = $("#divLeftSideModelsList"); 
alert(div) 

me donne une erreur disant que l'objet est nul mais

var div = document.getElementById("divLeftSideModelsList") 

me donne l'objet.

Est-ce Becuase il y a des conflits entre jQuery et d'autres cadres?

S'IL VOUS PLAÎT conseiller

+0

Avez-vous résolu ce problème? Souhaitez-vous de l'aide supplémentaire ou pouvez-vous marquer la question comme étant une réponse? –

Répondre

6

avoir une lecture de ceci: http://docs.jquery.com/Using_jQuery_with_Other_Libraries

montre de bons exemples :)

Redéfinition de la -fonction $

Cependant, vous pouvez remplacer cette valeur par défaut en appelant jQuery.noConflict() à tout moment après jQuery et l'autre bibliothèque ont tous deux chargés. Par exemple:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    jQuery.noConflict(); 

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

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 

Cela reviendra à $ retour à sa bibliothèque d'origine. Vous pourrez toujours utiliser "jQuery" dans le reste de votre application.

De plus, il y a une autre option. Si vous voulez vous assurer que jQuery ne sera pas en conflit avec une autre bibliothèque - mais vous voulez l'avantage d'un nom court, vous pouvez faire quelque chose comme ceci:

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

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

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 
-2

Est-ce que ce travail de code:

var div = jQuery("#divLeftSideModelsList"); 
alert(div); 
2

Vous devez utiliser jQuery dans noConflict mode. Et puis utilisez jQuery() au lieu de $().

0

bug étrange. Quoi qu'il en soit, le prototype et jQuery redéfinissent la variable globale $.

Veuillez lire this pour savoir comment jQuery peut être utilisé avec d'autres bibliothèques.

Il dit essentiellement que l'appel jQuery.noConflict() quitte la variable $ seulement pour les autres libs à utiliser