Um projeto em que estou trabalhando exige o uso do jQuery nas páginas da Web dos clientes. Os clientes inserirão um pedaço de código que forneceremos, incluindo alguns <script>
elementos que constroem um widget em um <script>
-criado <iframe>
. Se eles ainda não estiverem usando a versão mais recente do jQuery, isso também incluirá (provavelmente) um <script>
para a versão hospedada do Google do jQuery.
O problema é que alguns clientes já podem ter uma versão mais antiga do jQuery instalada. Embora isso possa funcionar se for pelo menos uma versão bastante recente, nosso código depende de algumas funcionalidades introduzidas recentemente na biblioteca jQuery, portanto, haverá casos em que a versão jQuery de um cliente é muito antiga. Não podemos exigir que eles atualizem para a versão mais recente do jQuery.
Existe alguma maneira de carregar uma versão mais recente do jQuery para usar somente dentro do contexto do nosso código, que não interfira ou afete qualquer código na página do cliente? Idealmente, talvez pudéssemos verificar a presença de jQuery, detectar a versão e, se ela for muito antiga, de alguma forma carregar a versão mais recente apenas para uso em nosso código.
Eu tive a ideia de carregar o jQuery em um <iframe>
domínio do cliente que também inclui o nosso <script>
, o que parece viável, mas espero que exista uma maneira mais elegante de fazer isso (sem mencionar as penalidades de desempenho e complexidade do <iframe>
s extras ).
fonte
Respostas:
Sim, é possível devido ao modo de noconflict do jQuery. http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
Então, em vez de
$('#selector').function();
, você fariajQuery_1_3_2('#selector').function();
oujQuery_1_1_3('#selector').function();
.fonte
(function($) { /*your code here*/ }(jquery_x_x_x));
Depois de analisar e experimentar, descobri que na verdade não permitia que mais de uma instância do jquery fosse executada por vez. Depois de pesquisar, descobri que isso fazia exatamente o truque e era muito menos código.
Então, basta adicionar o "j" após o "$".
fonte
(function($){ })($j)
Retirado de http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :
$
ejQuery
pertence à versãoX.$
ejQuery
pertence à versãoY, mais_$
e_jQuery
pertence à versãoX.my_jQuery = jQuery.noConflict(true);
- agora$
ejQuery
pertencem à versãoX,_$
e_jQuery
provavelmente são nulos, emy_jQuery
são a versãoY.fonte
Você pode ter quantas versões diferentes do jQuery em sua página desejar.
Use
jQuery.noConflict()
:DEMONSTRA | Fonte
fonte
É possível carregar a segunda versão do jQuery, usá-lo e, em seguida, restaurar o original ou manter a segunda versão, se não houvesse o jQuery carregado anteriormente. Aqui está um exemplo:
fonte
Gostaria de dizer que você deve sempre usar as versões estáveis mais recentes ou recentes do jQuery. No entanto, se você precisar trabalhar com outras versões, poderá adicionar essa versão e renomeá-la
$
para outro nome. Por exemploOlhe aqui se você escrever algo usando,
$
então você obterá a versão mais recente. Mas se você precisar fazer algo com o antigo, basta usar em$oldjQuery
vez de$
.Aqui está um exemplo
Demo
fonte
Absolutamente, sim, você pode. Este link contém detalhes sobre como você pode conseguir isso: https://api.jquery.com/jquery.noconflict/ .
fonte