Como corrigir o JetTabs que não alterna conteúdo no frontend
O que é JetTabs que não alterna conteúdo?
O JetTabs é o widget de abas do Crocoblock para o Elementor. No frontend, ele depende de um script JavaScript próprio que escuta o clique no rótulo da aba, alterna a classe ativa entre os painéis e exibe o conteúdo correspondente. Quando o widget usa carregamento por AJAX, esse mesmo script ainda busca o template de cada aba sob demanda. Se o JavaScript não roda como esperado, as abas aparecem na tela, mas o clique não troca o painel: o visitante fica preso sempre no primeiro conteúdo.
O problema é quase sempre de execução do JavaScript no navegador, não de conteúdo. Plugins de cache e minificação que adiam ou combinam scripts, dois widgets JetTabs com o mesmo ID na página, um conflito de jQuery com outro plugin ou tema, ou o template chamado por AJAX que falha em retornar HTML são as causas concretas. O conteúdo está lá no editor do Elementor, mas o gatilho que faz a aba responder ao clique deixou de funcionar no site publicado.
Como identificar
- Ao clicar em qualquer aba do JetTabs no site publicado, o conteúdo não muda e permanece sempre no primeiro painel.
- As abas funcionam normalmente na prévia do editor do Elementor, mas travam no frontend para o visitante.
- No console do navegador aparece um erro de JavaScript como ‘Uncaught TypeError’ ou ‘$ is not a function’ ao clicar na aba.
- Quando o JetTabs usa carregamento por AJAX, a aba mostra o spinner de carregamento e nunca exibe o conteúdo do template.
- Em páginas com mais de um bloco de abas, clicar em uma aba abre o conteúdo do outro JetTabs por causa de IDs repetidos.
Como prevenir
- Sempre exclua os scripts do JetTabs e do Elementor das regras de delay, combine e minify do seu plugin de cache, validando o frontend após cada ajuste de otimização.
- Use IDs CSS únicos por widget quando colocar mais de um JetTabs na mesma página, evitando colisão entre os painéis.
- Regenere os arquivos do Elementor após cada atualização do Elementor, do tema ou do JetTabs, para manter o CSS/JS em sincronia.
- Mantenha os templates referenciados pelo carregamento AJAX publicados e versionados, e revise antes de excluir qualquer template que possa estar em uso por uma aba.
Causa
- Um plugin de cache ou otimização (como WP Rocket ou Perfmatters) está adiando, combinando ou minificando o JavaScript do JetTabs, fazendo o script do widget não inicializar a tempo de registrar o clique nas abas.
- Dois ou mais widgets JetTabs na mesma página estão com IDs de aba idênticos, então o clique em um bloco aciona o painel do outro bloco em vez do conteúdo correto.
- O JavaScript do Elementor frontend não foi carregado porque o arquivo CSS/JS do Elementor está desatualizado no cache; sem ele, o script do JetTabs não tem a base do Elementor para rodar.
- Outro plugin ou o tema enfileira uma versão conflitante do jQuery ou dispara um erro de JavaScript que interrompe a execução antes do handler de clique do JetTabs ser registrado.
- O JetTabs está configurado para carregar o conteúdo por AJAX, mas o template do Elementor referenciado foi excluído, despublicado ou retorna vazio, então a aba dispara a requisição e não recebe HTML para exibir.
Como resolver
- Regenere os arquivos e limpe o cache do site: Comece pelo mais comum: regenere o CSS/JS do Elementor e limpe todos os caches (plugin de cache, CDN e navegador). Arquivos defasados deixam o script do JetTabs sem a base do Elementor e travam a troca de abas.
Painel WP -> Elementor -> Ferramentas -> Regenerar Arquivos e Dados Limpe o cache do seu plugin de cache (ex.: WP Rocket -> Limpar cache) Purgue o cache da CDN/Cloudflare e recarregue a página com Ctrl+F5 - Desative o adiamento e a combinação de JavaScript: No plugin de otimização, exclua os scripts do JetTabs e do Elementor das opções de Delay JavaScript, Combine e Minify. Adiar esses arquivos impede que o handler de clique das abas seja registrado a tempo.
WP Rocket -> Otimização de Arquivos -> desligue 'Combinar arquivos JS' WP Rocket -> Mídia -> Adiar execução de JS -> adicione 'jet-tabs' e 'elementor' a lista de exclusão Perfmatters -> Otimização de Scripts -> exclua jet-tabs e elementor do delay - Garanta IDs únicos quando houver vários JetTabs: Se a página tem mais de um bloco de abas, abra cada widget JetTabs no Elementor e force um ID CSS distinto na aba Avançado. IDs repetidos fazem o clique acionar o painel do bloco errado.
Editor do Elementor -> selecione o widget JetTabs -> aba Avançado Em ID CSS, defina um valor único por bloco (ex.: jettabs-faq, jettabs-precos) Atualize a página e teste o clique em cada bloco separadamente - Isole o conflito de JavaScript de plugin ou tema: Abra o console do navegador, recarregue a página e procure erros de JavaScript ao clicar na aba. Desative os demais plugins um a um e troque para um tema padrão para identificar o que interrompe a execução antes do JetTabs.
Abra o console: F12 -> aba Console -> recarregue a página Clique na aba e observe erros como 'Uncaught TypeError' ou '$ is not a function' Painel WP -> Plugins -> desative os demais um a um, testando o clique a cada vez - Verifique o template chamado por AJAX: Se o JetTabs carrega conteúdo por AJAX, confirme que cada aba aponta para um template do Elementor publicado e existente. Um template excluído ou despublicado faz a aba ficar no spinner e nunca renderizar.
Editor do Elementor -> widget JetTabs -> abra cada aba e confira o template selecionado Painel WP -> Templates -> confirme que o template existe e esta Publicado Reselecione o template na aba e atualize a página para refazer a requisicao AJAX
<?php
// Exclui os scripts do JetTabs e do Elementor do 'delay JavaScript' do WP Rocket,
// garantindo que o handler de clique das abas inicialize no frontend.
add_filter( 'rocket_delay_js_exclusions', 'full_jettabs_delay_js_exclusions' );
function full_jettabs_delay_js_exclusions( $excluded ) {
$excluded[] = 'jet-tabs';
$excluded[] = 'jet-elements';
$excluded[] = 'elementor/assets/js/frontend';
$excluded[] = 'elementor/assets/js/webpack';
return $excluded;
}














