¿Qué pasa si se introducen 2 jqueries al mismo tiempo?
Cuando importamos jQuery, jQuery solo inyecta dos variables en el espacio global de ventana:
Copia el código de la siguiente manera:
ventana.$ = ventana. jQuery = { jQuery object };
Al mismo tiempo, jQuery conserva las antiguas referencias a los objetos window.$ y window.jQuery internamente. Cuando llamamos:
Copia el código de la siguiente manera:
var $jq = $.noConflict();
window.$ se restaura, pero window. jQuery sigue siendo jQuery.
Cuando llamamos:
Copia el código de la siguiente manera:
var $jq = $.noConflict(true);
ventana .$ y window.jQuery se restauran. Excepto que jQuery está disponible a través de la variable $jq, todo parece como si jQuery nunca se importara.
Por lo tanto, jQuery que permite que las versiones antiguas y nuevas sobrevivan se puede implementar así:
Copie el código de la siguiente manera:
Con $jq en myscript.js ya es posible acceder a la versión 1.11 de jQuery.
En este punto, el problema está resuelto.
Sin embargo, introducir dos versiones de jQuery arruinará la página. ¿Qué pasa si alguien no entiende el código y elimina var $jq = jQuery.noConflict(true);? O, si intercambias las dos líneas que importan jQuery, no obtendrás la versión correcta de jQuery.
La mejor manera es mantener la página sin cambios y hacer referencia directamente al nuevo archivo js que escribimos:
Copie el código de la siguiente manera:
De esta manera, hacemos referencia en myscript.js usa la última versión de jQuery y a la página no le importa si usa jQuery o qué versión de jQuery usa.
Empiece a escribir una solución nueva y mejor. Primero, determine el cuerpo de myscript.js:
Copia el código de la siguiente manera:
// myscript.js
(function () {
// COMENZAR
// TODO: código javascript aquí...
// FIN
})();
El uso de funciones anónimas es una buena práctica ya que no contamina las variables globales y elimina el acceso al código externo.
El siguiente paso es incrustar el código jQuery 1.11 directamente:
Copie el código de la siguiente manera:
// myscript.js
(función () {
// COMENZAR
/*! jQuery v1.11.1 */
!función(a,b){"objeto" ==tipo de módulo&& " objeto"==tipo de módulo.exportaciones?...
if(k&&j[k]&&(e||j[k].data)||void 0!==d ||"cadena" ! =tipode b)return k||(k=...
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a. get?a.get (esto...
var $ = jQuery.noConflict(true);
// TODO: código javascript aquí...
// FIN
})();
Por supuesto, el código incrustado es el código comprimido, un total de ***3 líneas, y luego agrega una oración:
Copia el código de la siguiente manera:
var $ = jQuery.noConflict(true);
// TODO: el código javascript está aquí:
Copie el código de la siguiente manera noConflict(true);
Tenga en cuenta que $ es una variable local en jQuery. Puede hacer referencia a este $ en cualquier momento en el código posterior. $ variable global en otras versiones de jQuery en la página
p>
El último paso es verificar si el protocolo jQuery nos permite incrustar el código fuente de jQuery directamente en nuestro propio código JavaScript