versiones usar problemas noconflict funciona example entre compatibilidad asp.net javascript jquery

asp.net - usar - ¿Cómo ejecuto diferentes versiones de jQuery en la misma página?



no funciona jquery en mi web (5)

Como dijo ConroyP, puedes hacer esto con jQuery.noConflict pero no olvides var cuando jQuery.noConflict variable. Me gusta esto.

<script src="jQuery1.3.js"></script> <script> var jq13 = jQuery.noConflict(true); </script> <!-- original author''s jquery version --> <script src="jQuery1.2.3.js"></script>

Puede conectar todos los $ ''a jq13 agregando (jq13) después de la función }) . Me gusta esto

(function($) { ... })(jq13);

Mi compañía ha comprado un producto que representa un control ASP.NET en la página. Este control usa jQuery 1.2.3 y agrega una etiqueta de script a la página para referenciarlo. Los desarrolladores del control no admitirán el uso del control si se modificó de alguna forma (incluida la modificación para hacer referencia a una versión diferente de jQuery).

Estoy a punto de comenzar el desarrollo de mi propio control y me gustaría utilizar las funciones y las mejoras de velocidad de jQuery 1.3. Ambos controles deberán existir en la misma página.

¿Cómo puedo permitir que el control adquirido use jQuery 1.2.3 y nuevo desarrollo personalizado para usar jQuery 1.3? También por curiosidad, ¿qué pasaría si usáramos un control adicional que necesitara hacer referencia a otra versión de jQuery?


En la segunda versión, declare una variable como $ .noConflict (verdadero). Y use la variable declarada en lugar de $ used en el código jquery. Por favor, compruebe el siguiente código: Este código se utiliza después de la declaración de las segundas versiones de jquery:

<script type="text/javascript"> var jQuery_1_9_1 = $.noConflict(true); function pageLoad(sender, args) { var $ddl = jQuery_1_9_1("select[name$=drpClassCode]"); var $ddl1 = jQuery_1_9_1("select[name$=drpSubContractors]"); $ddl.select2(); $ddl1.select2(); $ddl.bind("change keyup", function () { $ddl.fadeIn("slow"); }); $ddl.bind("change keyup", function () { $ddl1.fadeIn("slow"); }); }


Parece que el orden no importa ... por ejemplo: http://gist.github.com/136686 . La salida de la consola está en la parte superior y todas las versiones parecen estar en los lugares correctos.


Puede lograr esto ejecutando su versión de jQuery en modo sin conflicto . El modo "sin conflicto" es la solución típica para que jQuery trabaje en una página con otros marcos como el prototype , y también se puede usar aquí, ya que básicamente espacia el nombre de cada versión de jQuery que cargue.

<script src="jQuery1.3.js"></script> <script> jq13 = jQuery.noConflict(true); </script> <!-- original author''s jquery version --> <script src="jQuery1.2.3.js"></script>

Este cambio significará que cualquiera de las cosas de jQuery que quiera usar tendrá que ser llamada usando jq13 lugar de $ , por ejemplo

jq13("#id").hide();

No es una situación ideal tener las dos versiones ejecutándose en la misma página, pero si no tiene otra alternativa, el método anterior debería permitirle usar dos versiones diferentes a la vez.

También por curiosidad, ¿qué pasaría si usáramos un control adicional que necesitara hacer referencia a otra versión de jQuery?

Si necesita agregar otra versión de jQuery, puede ampliar lo anterior:

<script src="jQuery1.3.js"></script> <script> jq13 = jQuery.noConflict(true); </script> <script src="jQuery1.3.1.js"></script> <script> jq131 = jQuery.noConflict(true); </script> <!-- original author''s jquery version --> <script src="jQuery1.2.3.js"></script>

Las variables jq13 y jq131 se usarán para las características específicas de la versión que requiera.

Es importante que el jQuery utilizado por el desarrollador original se cargue en último lugar ; es probable que el desarrollador original haya escrito su código bajo la suposición de que $() usaría su versión de jQuery. Si carga otra versión después de la suya, $ será "capturado" por la última versión que cargue, lo que significaría que el código del desarrollador original se ejecuta en la última versión de la biblioteca, lo que hace que los noConflicts algo redundantes.


hacer que sea falso trabajar

var jq16 = $.noConflict(false);