🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o erro de jQuery entre Elementor, Crocoblock e addons

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Erro de jQuery entre Elementor e Crocoblock EN: jQuery conflict between Elementor and Crocoblock
Severidade Grave
Descrição O erro de jQuery entre Elementor e Crocoblock aparece quando dois scripts carregam versões diferentes de jQuery ou quando o jQuery e adiado, e o console mostra 'jQuery is not defined' ou '$ is not a function'. Os widgets dinamicos do JetEngine, os filtros do JetSmartFilters e os popups do JetPopup param de funcionar.

O que é o erro de jQuery entre Elementor e Crocoblock?

O erro de jQuery entre Elementor e Crocoblock e um conflito de JavaScript em que a biblioteca jQuery deixa de estar disponível no momento em que os scripts dos plugins tentam usa-la. O Elementor e os addons Crocoblock (JetEngine, JetSmartFilters, JetPopup, JetElements) dependem de jQuery e do jQuery Migrate para inicializar widgets, AJAX e interacoes no front-end.

Como identificar

  • O console do navegador mostra ‘Uncaught ReferenceError: jQuery is not defined’ ao abrir a página.
  • O console mostra ‘Uncaught TypeError: $ is not a function’ ou ‘jQuery(…).SomeFunction is not a function’.
  • Listing Grids do JetEngine aparecem vazios ou não paginam, mesmo com itens cadastrados.
  • Filtros do JetSmartFilters não aplicam e a URL não atualiza ao selecionar uma opção.
  • Popups do JetPopup ou abas/sliders do JetElements não abrem ao clicar.
  • Aviso ‘JQMIGRATE: Migrate is installed’ ou ‘jQuery.migrateMute’ some e funções antigas quebram.
Antes de começar: Faca backup do site e teste a desativacao de plugins e a atualização em ambiente de staging. Desativar o plugin errado em producao pode derrubar páginas montadas com JetEngine. Anote a ordem em que reativa cada plugin para conseguir reverter.

Como prevenir

  • Mantenha Elementor, Elementor PRO e os plugins Crocoblock sempre na mesma janela de atualização, testando em staging antes de subir.
  • No plugin de cache, deixe o jquery-core e o jquery-migrate permanentemente fora do Delay JS e da combinacao de JavaScript.
  • Evite plugins que registram a própria versão de jQuery; prefira os que usam o jQuery do nucleo do WordPress.
  • Em snippets próprios, sempre use o wrapper jQuery(function($){ … }); em vez do atalho $ global.

Causa

  • Um plugin ou tema registra a sua própria versão de jQuery (via wp_register_script com handle 'jquery'), sobrescrevendo a versão do WordPress que o Elementor e o Crocoblock esperam.
  • A opção Delay JavaScript Execution (WP Rocket, LiteSpeed, Perfmatters) adia o jquery-core e o jquery-migrate, fazendo os scripts do JetEngine rodarem antes do jQuery existir.
  • A combinacao/minificacao de JS (Combine JavaScript Files) muda a ordem de carregamento e coloca o código do addon antes do jquery-core.
  • O jQuery Migrate foi removido por um plugin de otimização, e um addon Crocoblock antigo ainda usa uma função depreciada (ex.: jQuery.fn.bind) que so existe com o Migrate ativo.
  • Um snippet customizado usa o atalho $ fora de um wrapper noConflict, e o $ aponta para outra biblioteca em vez do jQuery.
  • Versões incompativeis: JetEngine ou JetSmartFilters desatualizado frente a uma versão mais nova do Elementor, com a API de scripts mudada entre eles.

Como resolver

  1. Confirme o erro exato no console: Abra a página quebrada, acesse o console do navegador e leia a primeira linha vermelha. Ela diz se o problema e jQuery ausente ou uma função específica de addon que sumiu. Anote o arquivo .js citado, porque ele aponta o plugin culpado.
    Tecla F12 -> aba Console
    Uncaught ReferenceError: jQuery is not defined
    Uncaught TypeError: $ is not a function
  2. Isole o conflito desativando plugins: Desative todos os plugins, exceto Elementor, Elementor PRO e os do Crocoblock. Recarregue e veja se o erro some. Se sumir, reative um a um, limpando o cache a cada teste, até o erro voltar — o último reativado e o que carrega o jQuery duplicado.
    wp plugin deactivate --all --exclude=elementor,elementor-pro,jet-engine
    wp plugin activate nome-do-plugin
    wp cache flush
  3. Exclua o jQuery do Delay e da combinacao de JS: No seu plugin de cache, retire o jquery-core, o jquery-migrate e os scripts do Crocoblock das otimizacoes de adiar e combinar JavaScript. Isso garante que o jQuery carregue primeiro e que os addons o encontrem ao inicializar.
    jquery.min.js
    jquery-migrate.min.js
    /wp-content/plugins/jet-engine/
    /wp-content/plugins/jet-smart-filters/
  4. Garanta o jQuery Migrate carregado: Se um plugin de otimização removeu o jQuery Migrate, reative-o. Addons Crocoblock antigos ainda usam funções depreciadas que so existem com o Migrate presente. Desative a opção 'Remove jQuery Migrate' (ou equivalente) no plugin de performance.
    wp option get perfmatters_options
    Desmarcar: Remove jQuery Migrate
  5. Teste no Modo de Segurança do Elementor e atualize: Abra a página com o Modo de Segurança do Elementor para confirmar que o conflito vem de outro plugin. Em seguida, atualize Elementor, Elementor PRO e todos os plugins Crocoblock para versões compativeis entre si, sempre testando antes em staging.
    Elementor -> Ferramentas -> Modo de Segurança -> Ativar
    wp plugin update jet-engine jet-smart-filters elementor elementor-pro
JavaScript
// Snippet proprio: sempre isole o jQuery para evitar '$ is not a function'
// Errado: o $ global pode ser de outra biblioteca
// $('.jet-listing-grid').slick();

// Certo: o $ dentro do wrapper e garantidamente o jQuery
jQuery( function ( $ ) {
  $( '.jet-listing-grid' ).each( function () {
    // sua logica que depende do jQuery aqui
  } );
} );

// Se precisar rodar so depois do Elementor inicializar o front-end:
jQuery( window ).on( 'elementor/frontend/init', function () {
  // codigo que interage com widgets do Elementor/Crocoblock
} );

Perguntas frequentes

Por que o erro so aparece no front-end e não no editor do Elementor
Porque o editor carrega os scripts em outra ordem e quase sempre sem o plugin de cache atuando. No front-end o cache adia ou combina o JavaScript, e e ai que o jQuery acaba carregando depois dos scripts do Crocoblock, quebrando os widgets dinamicos.
Como descubro qual plugin esta carregando o jQuery duplicado
Desative todos os plugins menos Elementor e Crocoblock, confirme que o erro sumiu e reative um a um limpando o cache a cada teste. O plugin que faz o erro voltar e o culpado. O arquivo .js citado no console também aponta a pasta do plugin.
Posso simplesmente remover o jQuery Migrate para limpar os avisos
Não sem testar. Addons Crocoblock e temas mais antigos usam funções de jQuery depreciadas que so existem com o Migrate ativo. Remove-lo pode trocar um aviso por uma quebra real de filtros e popups. Atualize os addons antes de cogitar remover o Migrate.
O Delay JavaScript Execution do WP Rocket causa esse erro
Pode causar. Quando o jquery-core e adiado junto com os scripts do JetEngine, eles tentam usar o jQuery antes dele existir. A correção e excluir o jquery, o jquery-migrate e os scripts do Crocoblock da lista de adiamento.
Atualizei o Elementor e os filtros do JetSmartFilters pararam. E o jQuery
Provavelmente e incompatibilidade de versão, não falta de jQuery. Uma versão nova do Elementor pode mudar como os scripts são registrados, e um JetSmartFilters antigo não acompanha. Atualize todos os plugins Crocoblock para a versão compativel com o seu Elementor.
O que significa o erro $ is not a function no console
Significa que o atalho $ não esta apontando para o jQuery naquele ponto do código, geralmente porque outra biblioteca tomou o $ ou porque o jQuery ainda não carregou. Use o wrapper jQuery(function($){ ... }); para garantir que o $ seja o jQuery dentro do seu script.
O Modo de Segurança do Elementor resolve o conflito de jQuery
Ele não corrige, mas diagnostica. O Modo de Segurança carrega a página sem o tema e sem outros plugins. Se o erro sumir nesse modo, o conflito vem de um terceiro plugin ou do tema, e não do Elementor nem do Crocoblock.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes