Un proyecto en el que estoy trabajando requiere el uso de jQuery en las páginas web de los clientes. Los clientes insertarán un fragmento de código que proporcionaremos, que incluye algunos <script>
elementos que compilan un widget en un <script>
archivo creado <iframe>
. Si aún no están utilizando la última versión de jQuery, esto también incluirá (muy probablemente) una <script>
para la versión alojada de Google de jQuery.
El problema es que algunos clientes ya pueden tener instalada una versión anterior de jQuery. Si bien esto puede funcionar si es al menos una versión bastante reciente, nuestro código se basa en alguna funcionalidad recientemente introducida en la biblioteca jQuery, por lo que seguramente habrá casos en que la versión jQuery de un cliente sea demasiado antigua. No podemos exigir que actualicen a la última versión de jQuery.
¿Hay alguna forma de cargar una versión más nueva de jQuery para usar solo dentro del contexto de nuestro código, que no interfiera con, ni afecte, ningún código en la página del cliente? Idealmente, tal vez podríamos verificar la presencia de jQuery, detectar la versión y, si es demasiado antigua, cargar de alguna manera la versión más reciente para usarla en nuestro código.
Tuve la idea de cargar jQuery en un <iframe>
dominio del cliente que también incluye nuestro <script>
, lo que parece posible, pero espero que haya una forma más elegante de hacerlo (sin mencionar las penalizaciones de rendimiento y complejidad de extra <iframe>
s).
fuente
Respuestas:
Sí, es factible debido al modo sin conflicto de jQuery. http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
Entonces, en lugar de
$('#selector').function();
, lo haríasjQuery_1_3_2('#selector').function();
ojQuery_1_1_3('#selector').function();
.fuente
(function($) { /*your code here*/ }(jquery_x_x_x));
Después de mirar esto y probarlo, descubrí que en realidad no permitía que se ejecutara más de una instancia de jquery a la vez. Después de buscar, descubrí que esto funcionaba bien y que era mucho menos código.
Entonces, agregar la "j" después de "$" fue todo lo que necesitaba hacer.
fuente
(function($){ })($j)
Tomado de http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :
$
yjQuery
pertenece a versionX.$
yjQuery
perteneces a versionY, plus_$
y_jQuery
perteneces a versionX.my_jQuery = jQuery.noConflict(true);
- ahora$
yjQuery
pertenece a la versión X,_$
y_jQuery
probablemente sea nulo, ymy_jQuery
es la versiónY.fuente
Puede tener tantas versiones diferentes de jQuery en su página como desee.
Uso
jQuery.noConflict()
:DEMO | Fuente
fuente
Es posible cargar la segunda versión de jQuery, usarla y luego restaurarla a la original o conservar la segunda versión si no se cargó jQuery antes. Aquí hay un ejemplo:
fuente
Me gustaría decir que siempre debe usar jQuery últimas o recientes versiones estables. Sin embargo, si necesita trabajar con otras versiones, puede agregar esa versión y cambiarle el
$
nombre por otro nombre. Por ejemploMire aquí si escribe algo usando
$
y obtendrá la última versión. Pero si necesita hacer algo con viejo, simplemente use en$oldjQuery
lugar de$
.Aquí hay un ejemplo
Manifestación
fuente
Por supuesto que sí. Este enlace contiene detalles sobre cómo puede lograrlo: https://api.jquery.com/jquery.noconflict/ .
fuente