Como corrigir o erro de jQuery entre Elementor, Crocoblock e addons
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.
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
- 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 - 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 - 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/ - 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 - 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
// 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
} );














