Como atualizo o jQuery para a versão mais recente que posso baixar?

33

Estou usando o Drupal 7, que usa o jQuery 1.4 como padrão? Como posso atualizá-lo para a versão mais recente (atualmente 1.7)?

Karmacoma
fonte
1
Eu não quero usar o módulo, quero manuel.
19412 Karmacoma
Atualizar o jQuery no Drupal manualmente seria muito complicado e arriscado, mesmo para os desenvolvedores mais experientes do Drupal. Você deve seguir o conselho de Clive e utilizar o jQuery Update.
sheena_d
Eu vou para o arquivo misc-jquery.js via ftp e substituo o novo código jquery. Direita?
19412 Karmacoma
misc-jquery.js não é exatamente a mesma cópia de uma versão jquery, até onde eu sei. No entanto, de acordo com o git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , também deve haver um suporte para 1.7.
precisa saber é o seguinte
@Patrick Kenny Eu não acho que isso é correto - eu posso selecionar jQuery 1.8 usando jquery_update a partir de hoje
doub1ejack

Respostas:

44

Uma maneira é instalar a versão dev do jQuery Update , que oferece a opção de usar o jQuery 1.7 (visitando a página de configurações em http://mysite.com/admin/config/development/jquery_update ).

Cuidado, no entanto, atualmente é conhecido por quebrar o JavaScript em outro local do site (por exemplo, o menu suspenso do widget em uma página Gerenciar campos não funcionará mais). Se você está preparado para consertar isso e outros pequenos aborrecimentos, essa provavelmente é sua melhor aposta. Você também deve observar que o uso da versão dev de um módulo não apresenta riscos, pois as chances de haver bugs são muito maiores do que o uso de uma versão específica.

Se você quiser fazer isso manualmente, terá um monte de código javascript principal para reescrever para que seu site funcione conforme o esperado; O jQuery mudou muito entre as versões 1.4 / 1.5 e 1.7, portanto, grande parte do código javascript do Drupal simplesmente não funciona com ele.

Se você quiser apenas inserir uma versão do jQuery 1.7, provavelmente poderá implementar hook_js_alter(), desarmar o arquivo principal do jQuery e adicionar o seu no seu lugar:

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

Depois de fazer isso, abra as Ferramentas do desenvolvedor / Firebug e você verá todas as alterações necessárias para fazer com que o restante do site JS funcione :)

ATUALIZAR

A versão mais recente da atualização do jQuery ( 7.x-2.3 no momento da redação) permitirá agora que você atualize o jQuery para a v1.8. Muito legal.

O módulo jQuery Multi é outra opção, graças ao goron por apontar isso nos comentários. Como ele também observa, este módulo possui uma versão estável e não quebra nenhum javascript existente.

Clive
fonte
Thaks man !!! Eu estou procurando isso há um tempo! No meu caso, eu só queria carregar uma versão diferente do jQuery por tema, então substituí MYMODULE_js_alter por MYTHEME_js_alter e drupal_get_path ('theme', 'MYTHEME') por drupal_get_path ('module', 'MYMODULE')
victmo
1
Cuidado, o Drupal vem com seu próprio conjunto de arquivos JavaScript gravados para funcionar com um jQuery antigo e não compatível com o jQuery 1.7 ou 1.8. A atualização mais recente do jQuery fornece arquivos de substituição para eles.
Pierre Buyle
1
Você precisa da versão dev do módulo, a versão estável não tem a opção 1.7
Clive
2
O jQuery Multi é outra opção, que não requer a versão dev e não quebra nenhum JS. Talvez adicione-o como opção ou remova "The only way"?
goron
1
@ Goron Bom ponto, obrigado. Algumas dessas respostas provavelmente estão obsoletas agora, tentarei atualizá-las em breve
Clive
4

Você também deve considerar o uso do multi-módulo jquery, que permite usar mais de uma versão do jquery. Ótimo módulo, estou usando-o para o Druapl 7 e 6 em todos os meus projetos.

rreiss
fonte
2

Inspirado na documentação do hook_js_alter , o seguinte funciona. Você pode colocá-lo no template.php do seu tema. Isso requer que você use um tema de administração diferente para evitar conflitos com o núcleo do Drupal e pressupõe que o jquery-1.8.3.min.js esteja localizado em uma pasta chamada 'js' dentro do tema (ajuste de acordo com a necessidade).

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}

Shaun Dychko
fonte
Exigindo um tema de administração diferente não é realmente uma solução, a menos que você pode fornecer uma lista de temas que vão trabalhar com este método. Meu palpite é que seriam muito, muito poucos. Além desses temas seria muito provavelmente também usar jQuery, o que seria muito bonito certamente levar para os problemas que o módulo de atualização jQuery foi especificamente projetado para corrigir
Clive
0

Não sei ao certo qual é o seu objetivo, mas quando precisei de uma versão específica para o desenvolvimento de módulos personalizados, consegui fazer isso usando jQuery.noConflict .

É um trabalho extra comparado ao módulo jquery_update (que o OP não parece se importar), mas significa que você não precisa se preocupar se vai estragar toda a instalação do drupal.

duvida1
fonte