Drupal 7 & jQuery - o sinal de cifrão

18

Se não estou planejando usar nenhuma biblioteca JS além da jQuery, existe algum motivo para precisar a chamada de Drupal para jQuery.noConflict () que remove $ como um alias para jQuery?

Supondo que não seja necessário remover o alias $, existe uma maneira de recuperá-lo universalmente, sem sempre precisar envolver meu código jQuery em (function ($) {...})?

maxedison
fonte

Respostas:

11

A solução que surgiu foi a seguinte:

Na parte superior do primeiro arquivo JS incluído no meu tema personalizado, basta colocar a seguinte linha:

$ = jQuery;

Feito :)

maxedison
fonte
Lol obrigado! Eu estava tentando descobrir por que o jQuery foi definido, mas $não foi. Devemos transformar esse trecho em um módulo: D
CamelBlues
Faça isso #var $ = jQuery;
Commonpike 26/10/14
6

Não, você não pode (Bem, você provavelmente poderia, mas não deveria).

Talvez em algum momento, seu módulo seja usado em outro projeto em outro site e, em seguida, ele use outra biblioteca JS (lembre-se, todo módulo drupal que você escreve é ​​automaticamente GPL e seu cliente pode usá-lo da maneira que quiser).

Não é tão complicado adicionar essas duas linhas a todos os arquivos js :)

Berdir
fonte
Concordo; por uma questão de compatibilidade, é melhor não usar $ como alias para jQuery, no Drupal, e sempre quebrar o código JavaScript usando o jQuery com (function($){…}).
kiamlaluno
Nesse ponto, não seria difícil simplesmente encontrar e substituir para transformar todos os $ em jQuery no meu módulo.
precisa saber é o seguinte
@maxedison o que acontece quando você mistura PHP com JavaScript? Use cifrões em cadeias de texto manipuladas por JavaScript?
11
Você ignorou totalmente o que o autor da pergunta estava "assumindo". É uma pergunta válida e um obstáculo, especialmente ao incorporar plug-ins de terceiros - você precisa editar todos esses arquivos para que eles funcionem sem $ e você deve fazer isso a cada atualização. Localizar e substituir também não funciona com plug-ins mais complexos, pois podem exigir que o escopo seja global. Precisa de uma correção tbh.
red
Estou tentando cunhar uma frase na Internet: "Toda vez que você usa $ (), Deus mata um gatinho". Por favor, pense nos gatinhos.
aendrew
0

Essa também pode ser uma solução possível, se você costuma usar módulos para esse tipo de pergunta.

jQuery Dollar

Este módulo permite que os desenvolvedores usem $ para acessar a biblioteca jQuery em vez de chamar explicitamente o jQuery ou usar fechamentos especiais no Drupal 7. Tudo o que você precisa fazer é habilitá-lo.

Sven
fonte