Drupal 7 & jQuery - das Dollarzeichen

18

Wenn ich keine anderen JS-Bibliotheken als jQuery verwenden möchte, gibt es einen Grund, Drupals Aufruf von jQuery.noConflict () zu benötigen, mit dem $ als Alias ​​für jQuery entfernt wird?

Unter der Annahme, dass das $ alias nicht entfernt werden muss, gibt es eine Möglichkeit, wie ich es universell wiederherstellen kann, ohne immer meinen jQuery-Code in (function ($) {...}) verpacken zu müssen?

maxedison
quelle

Antworten:

11

Die Lösung, die ich gefunden habe, ist folgende:

Am Anfang der ersten JS-Datei, die ich in mein benutzerdefiniertes Design einfüge, füge ich einfach die folgende Zeile ein:

$ = jQuery;

Getan :)

maxedison
quelle
Hahahaha, Danke! Ich habe versucht herauszufinden, warum jQuery definiert wurde, aber $nicht. Wir sollten dieses Snippet in ein Modul
umwandeln
Machen Sie dasvar $ = jQuery;
Commonpike
6

Nein, das kannst du nicht (du könntest es wahrscheinlich, aber du solltest es nicht).

Vielleicht wird Ihr Modul irgendwann in einem anderen Projekt auf einer anderen Site verwendet und diese Site verwendet dann eine andere JS-Bibliothek.

Es ist nicht so kompliziert, diese beiden Zeilen zu jeder js-Datei hinzuzufügen :)

Berdir
quelle
Genau; Aus Kompatibilitätsgründen ist es besser, $ nicht als Alias ​​für jQuery in Drupal zu verwenden und JavaScript-Code immer mit jQuery mit zu umbrechen (function($){…}).
kiamlaluno
An diesem Punkt wäre es nicht schwierig, einfach zu suchen und zu ersetzen, um alle $ in meinem Modul in jQuery zu verwandeln.
Maxedison
@maxedison Was passiert, wenn Sie PHP mit JavaScript mischen? Verwenden Sie Dollarzeichen in von JavaScript manipulierten Textzeichenfolgen?
1
Sie haben völlig ignoriert, was der Fragesteller "voraussetzte". Dies ist eine berechtigte Frage und ein Hindernis, insbesondere beim Einbetten von Plugins von Drittanbietern. Sie müssen alle diese Dateien bearbeiten, damit sie ohne $ funktionieren, und Sie müssen dies bei jedem Update tun. Suchen und Ersetzen funktioniert auch nicht mit komplexeren Plugins, da für diese möglicherweise ein globaler Gültigkeitsbereich erforderlich ist. Benötigt einen Fix tbh.
Rot
Ich versuche, im Internet einen Satz zu prägen: "Jedes Mal, wenn Sie $ () verwenden, tötet Gott ein Kätzchen." Denken Sie bitte an die Kätzchen.
13.
0

Dies könnte auch eine mögliche Lösung sein, wenn Sie dazu neigen, Module für diese Art von Fragen zu verwenden.

jQuery Dollar

Mit diesem Modul können Entwickler mit $ auf die jQuery-Bibliothek zugreifen, anstatt jQuery explizit aufrufen oder spezielle Closures in Drupal 7 verwenden zu müssen. Sie müssen es nur aktivieren.

Sven
quelle