Drupal 7 & jQuery - le signe $ dollar

18

Si je ne prévois pas d'utiliser des bibliothèques JS autres que jQuery, y a-t-il une raison d'avoir besoin de l'appel de Drupal à jQuery.noConflict () qui supprime $ comme alias pour jQuery?

En supposant qu'il n'est pas nécessaire de supprimer l'alias $, existe-t-il un moyen de le récupérer universellement sans avoir à encapsuler mon code jQuery dans (fonction ($) {...})?

maxedison
la source

Réponses:

11

La solution que j'ai trouvée est la suivante:

En haut du premier fichier JS que j'inclus dans mon thème personnalisé, je mets simplement la ligne suivante:

$ = jQuery;

Terminé :)

maxedison
la source
Lol merci! J'essayais de comprendre pourquoi jQuery était défini, mais ce $n'était pas le cas. Nous devrions faire de cet extrait un module: D
CamelBlues
faire çavar $ = jQuery;
commonpike
6

Non, vous ne pouvez pas (eh bien, vous pourriez probablement, mais vous ne devriez pas).

Peut-être qu'à un moment donné, votre module sera utilisé sur un autre projet sur un autre site, puis ce site utilisera une autre bibliothèque JS (rappelez-vous, chaque module drupal que vous écrivez est automatiquement GPL et votre client peut l'utiliser comme il le souhaite).

Ce n'est pas si compliqué d'ajouter ces deux lignes à chaque fichier js :)

Berdir
la source
Je suis d'accord; pour des raisons de compatibilité, il vaut mieux ne pas utiliser $ comme alias pour jQuery, dans Drupal, et toujours envelopper le code JavaScript à l'aide de jQuery avec (function($){…}).
kiamlaluno
À ce stade, il ne serait pas difficile de simplement rechercher et remplacer pour transformer tous les $ en jQuery dans mon module.
maxedison
@maxedison que se passe-t-il lorsque vous mélangez PHP avec JavaScript? Utiliser des signes dollar dans des chaînes de texte manipulées par JavaScript?
1
Vous avez totalement ignoré ce que le demandeur de questions "supposait". C'est une question valable et une gêne, en particulier lors de l'intégration de plugins tiers - vous devez modifier tous ces fichiers pour les faire fonctionner sans $, et vous devez le faire à chaque mise à jour. La recherche et le remplacement ne fonctionnent pas non plus avec des plugins plus complexes, car ils peuvent nécessiter que quelque chose soit de portée globale. Besoin d'un correctif tbh.
le
J'essaie de forger une phrase sur Internet: "Chaque fois que vous utilisez $ (), Dieu tue un chaton." S'il vous plaît - pensez aux chatons.
aendrew
0

Cela pourrait également être une solution possible, si vous avez tendance à utiliser des modules pour ce type de questions.

jQuery Dollar

Ce module permet aux développeurs d'utiliser $ pour accéder à la bibliothèque jQuery au lieu d'avoir à appeler explicitement jQuery ou à utiliser des fermetures spéciales dans Drupal 7. Tout ce que vous avez à faire est de l'activer.

Sven
la source