ti-enxame.com

Problema mais comum e não resolvido ao usar o jquery nas extensões J2.5

No joomla 2.5, as pessoas estão perguntando problemas no jquery quando existem várias extensões em uma página. A questão é como desenvolvedor de extensões, como usamos o jquery na extensão j2.5 ??, considerando que outras extensões também declaram códigos de arquivo jquery e jquery sem conflito e alguns desenvolvedores não se importam com isso ou não sabem e usam jquery à sua maneira, então o jquery não funciona em extensão.

Agora, eu devo verificar jfactory-> getapplication-> get ('jquery'), mas não é o suficiente, como mencionei acima. -

  1. nc_mode = jQuery.noConflict (); nc_mode (function () {......});
  2. jQuery.noConflict (); jQuery (function () {....});
  3. Usando apenas jQuery - jQuery (function () {....});

É muito necessário resolvê-lo da maneira correta, porque o uso do jquery é muito comum em extensões.

1
dev-m

noConflict é usado para que o alias usado ao declarar funções colidir com outras bibliotecas. O Joomla usa o Mootools (que está sendo removido gradualmente do núcleo), que apresenta grandes problemas de conflito com o jQuery, tanto como o $ alias para declarar funções assim:

$('button').click(function() { ...

Para obter uma compreensão melhor e mais aprofundada de noConflict, leia o seguinte, que também fornecerá exemplos de uso:

http://api.jquery.com/jquery.noconflict/

Quanto à importação do jQuery em extensões, esse é um pouco complicado. Tendo visto seu comentário em uma resposta anterior, você está plenamente ciente de que existem diferentes maneiras de importar o jQuery. Garantir que apenas 1 instância é importada é possível, mas é possível que ocorram alguns problemas.

Ao fazer isso para o seu próprio site, eu recomendaria simplesmente usar jQuery Easy , que é um plugin. Uma característica principal é remover todas as outras instâncias do jQuery para que não seja importado várias vezes.

Ao escrever sua própria extensão que você deseja disponibilizar ao público, como desenvolvedor, a pesquisa sobre esse assunto é a primeira coisa a ser feita. Detectar se o jQuery já foi carregado e depois importá-lo só funciona se outras extensões estiverem usando o mesmo método que você mencionou na sua pergunta. O problema é que nada é perfeito e você sempre encontrará problemas nos quais algumas extensões são escritas corretamente e outras não, portanto sempre haverá a possibilidade de conflitos. A única maneira de pensar para evitar isso é observando o código do jQuery Easy e vendo como eles eliminam outras instâncias do jQuery e tentando fazer isso você mesmo.

Atualização

Você não precisa usar jQuery como um alias para tudo. É claro que estamos acostumados a usar $ mas de fato jQuery é o alias padrão. A melhor maneira de contornar tudo é encapsulá-lo da seguinte maneira:

jQuery.noConflict();

jQuery(document).ready(function($) {
    $("element").hide();
    // more code using $
});

Daqui em diante, você pode continuar usando $ como um alias com escopo local.

2
Lodder