2009-11-12 11 views
5

Tengo una página que usa las secuencias de comandos Prototype y Mootools AJAX.Prototipo/pregunta de conflicto Mootools

Hay mucho más Mootools que Prototype, entonces me pregunto si Prototype tiene una función similar a jQuery's $j = jQuery.noConflict(); que puedo usar para redefinir $ alias para Prototype?

Gracias!

Respuesta

8

La nueva versión de MooTools tiene un modo no hay conflicto. Desafortunadamente, Prototype no lo hace, lo que significa que el $ tendrá que estar vinculado a Prototype.

Para habilitar el modo Dólar seguro, actualice su versión de MooTools y asegúrese de incluir MooTools después de Prototype.

<script type="text/javascript" src="prototype.js" /> 
<script type="text/javascript" src="mootools.js" /> 

Después de hacerlo, $ estará atado al prototipo. En las secuencias de comandos de MooTools, reemplace todas las referencias $ al document.id.

// Before 
var X = new Class({ 
    initialize: function(element){ 
     this.element = $(element); 
    } 
}); 


// After 
var X = new Class({ 
    initialize: function(element){ 
     this.element = document.id(element); 
    } 
}); 

o puede utilizar un cierre:

(function(){ 

    var $ = document.id; 

    this.X = new Class({ 
     initialize: function(element){ 
      this.element = $(element); 
     } 
    }); 

})(); 

Más información sobre el modo seguro Dólar está disponible en MooTools' blog:

http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/

+0

Gracias, esperaba que Prototype tuviera algo similar a esto, ya que es, con mucho, la implementación más pequeña, pero naturalmente, uno nunca tiene tanta suerte. – Marty

+1

Si bien estoy de acuerdo en que no desea una biblioteca de 200 kb (comprimida), 67 kb comprimidos de MooTools es muy respetable. No base su elección en el tamaño, sino en la funcionalidad. MooTools hace todo lo que hace Prototype y yo recomendaría descartar Prototype. Además, use el sitio web para hacer una compilación personalizada de MooTools y elimine todo lo que no necesite. –

3

tengo una solución muy simple:

<script src='mootools.js'></script> 
<script>$moo = $; delete ($);</script> 
<script src='prototype.js></script> 



<script> 

(function ($){ 


//here you can use $ of moo tools 

})($moo); 


//here you can use $ of prototype 


</script>