Drupal 7 y jQuery - el signo del dólar

18

Si no planeo usar ninguna biblioteca JS que no sea jQuery, ¿hay alguna razón para necesitar la llamada de Drupal a jQuery.noConflict () que elimina $ como un alias para jQuery?

Suponiendo que no es necesario eliminar el $ alias, ¿hay alguna manera de recuperarlo universalmente sin tener que envolver mi código jQuery en (function ($) {...})?

maxedison
fuente

Respuestas:

11

La solución que se me ocurrió es esta:

En la parte superior del primer archivo JS que incluyo en mi tema personalizado, simplemente pongo la siguiente línea:

$ = jQuery;

Hecho :)

maxedison
fuente
¡Jaja gracias! Estaba tratando de descubrir por qué se definió jQuery, pero $no lo estaba. Deberíamos convertir ese fragmento en un módulo: D
CamelBlues
hacer esovar $ = jQuery;
commonpike
6

No, no puedes (Bueno, probablemente podrías, pero no deberías).

Tal vez en algún momento, su módulo se usará en otro proyecto en otro sitio y luego ese sitio usará otra biblioteca JS (recuerde, cada módulo drupal que escriba es automáticamente GPL y su cliente puede usarlo de la forma que desee).

No es tan complicado agregar estas dos líneas a cada archivo js :)

Berdir
fuente
Estoy de acuerdo; En aras de la compatibilidad, es mejor no usar $ como alias para jQuery, en Drupal, y siempre envolver el código JavaScript usando jQuery con (function($){…}).
kiamlaluno
En ese punto, no sería difícil simplemente hacer una búsqueda y reemplazar para convertir todo $ en jQuery en mi módulo.
maxedison
@maxedison ¿qué sucede cuando mezclas PHP con JavaScript? ¿Usa signos de dólar en cadenas de texto manipuladas por JavaScript?
1
Ignoraste por completo lo que el autor de la pregunta estaba "asumiendo". Es una pregunta válida y un obstáculo, especialmente al incrustar complementos de terceros: debe editar todos esos archivos para que funcionen sin $, y debe hacerlo cada actualización. Buscar y reemplazar tampoco funciona con complementos más complejos, ya que pueden requerir que algo tenga un alcance global. Necesita una solución tbh.
rojo
Estoy tratando de acuñar una frase en Internet: "Cada vez que usas $ (), Dios mata a un gatito". Por favor, piensa en los gatitos.
aendrew
0

Esto también podría ser una posible solución, si tiende a utilizar módulos para ese tipo de preguntas.

jQuery Dollar

Este módulo permite a los desarrolladores usar $ para acceder a la biblioteca jQuery en lugar de tener que llamar a jQuery explícitamente o usar cierres especiales en Drupal 7. Todo lo que tiene que hacer es habilitarlo.

Sven
fuente