it-swarm-es.tech

El problema más común y no resuelto cuando se usa jquery en extensiones J2.5

En joomla 2.5 las personas preguntan problemas en jquery cuando hay varias extensiones en una página. La pregunta es, como desarrollador de extensiones, ¿cómo usamos jquery en la extensión j2.5 ?, teniendo en cuenta que otras extensiones también declaran archivos jquery y jquery sin conflictos y hay algunos desarrolladores a los que no les importa o no saben y usan jquery a su manera, por lo que jquery no funciona en extensión.

Ahora debería verificar jfactory-> getapplication-> get ('jquery') pero no es suficiente como mencioné anteriormente, así que entre las siguientes, cuál es la forma correcta de usar jquery declarando el archivo de script jquery (como dije anteriormente por qué debería declarar) -

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

Es muy necesario resolverlo correctamente porque el uso de jquery es muy común en las extensiones.

1
dev-m

noConflict se usa para que el alias usado al declarar funciones choque con otras bibliotecas. Joomla usa Mootools (que se elimina gradualmente del núcleo) que tiene problemas importantes de conflicto con jQuery tanto como $ alias para declarar funciones así:

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

Para obtener una mejor y más profunda comprensión de noConflict, lea lo siguiente, que también le dará ejemplos de uso:

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

En cuanto a la importación de jQuery en extensiones, esto es un poco complicado. Después de ver su comentario en una respuesta anterior mía, sabe que existen diferentes formas de importar jQuery. Asegurarse de que solo se importe 1 instancia es posible pero uno puede tener algunos problemas.

Al hacer esto para su propio sitio, simplemente recomendaría usar jQuery Easy , que es un complemento. Una característica principal es que elimina todas las demás instancias de jQuery para que no se importe varias veces.

Al escribir su propia extensión que desea poner a disposición del público, como desarrollador, la investigación sobre este asunto es lo primero que debe hacerse. Separar si jQuery ya se ha cargado y luego importarlo solo funciona si otras extensiones están utilizando este mismo método que usted mencionó en su pregunta. El problema es que nada es perfecto y siempre se encontrará con problemas en los que algunas extensiones se escriben correctamente y otras no, por lo que siempre habrá una posibilidad de conflictos. La única forma en que puedo pensar para evitar esto es mirar el código de jQuery Easy y ver cómo eliminan otras instancias de jQuery e intentar hacerlo usted mismo.

Actualización

No tiene que usar jQuery como un alias para todo. Por supuesto, todos estamos acostumbrados a usar $ pero de hecho jQuery es el alias predeterminado. Entonces, una buena manera de sortear todo es encapsularlo así:

jQuery.noConflict();

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

De aquí en adelante, puedes seguir usando $ como un alias de ámbito local.

2
Lodder