Código JavaScript (JS) p/ Controlar Slide do JetEngine c/ Widget Listing (Simulando Clique) - Bruno Devx - BR Criativus

post #5601

Código JavaScript (JS) p/ Controlar Slide do JetEngine c/ Widget Listing (Simulando Clique)

Publicado em: 12/08/2024 / Atualizado em: 19/11/2024

Categorias: BlogJavaScript (JS)JetEngineJSListing GridWordpress

Este código JavaScript sincroniza botões customizados com um slider implementado pelo Slick Slider do JetEngine usando o Widget “Listing”, garantindo que, ao clicar nos botões ou interagir com o slider (por meio de setas, dots ou deslizando), a classe active-button seja atribuída ao botão correspondente ao slide atualmente visível. Ele também oculta tooltips associados aos botões e simula cliques em elementos específicos do slider, mantendo a interface visualmente consistente com a navegação do usuário.

<script>
    document.addEventListener('DOMContentLoaded', function() {
        // Elementos dos botões à direita
        const buttons = document.querySelectorAll('.button-class'); // Substitua '.button-class' pela classe real dos botões
    
        // Elementos dos tooltips
        const tooltips = document.querySelectorAll('.tooltip'); // Substitua '.tooltip' pela classe real dos tooltips
    
        // Função para atualizar o botão ativo
        function updateActiveButton(button) {
            // Remover a classe ativa de todos os botões
            buttons.forEach(btn => btn.classList.remove('active-button'));
            // Adicionar a classe ativa ao botão clicado
            button.classList.add('active-button');
        }
    
        // Função para ocultar todos os tooltips
        function hideTooltips() {
            tooltips.forEach(tooltip => {
                tooltip.classList.add('hidden');
                setTimeout(() => {
                    tooltip.style.display = 'none';
                }, 500); // Tempo da transição de fade out dos tooltips
            });
        }
    
        // Função para simular clique em outro botão
        function simulateButtonClick(nthChild) {
            // Seleciona o elemento com a classe especificada e o nth-child dinâmico
            var selector = `.jet-slick-dots li:nth-child(${nthChild})`;
            var button = document.querySelector(selector);
    
            // Verifica se o elemento foi encontrado
            if (button) {
                // Simula um clique no botão
                button.click();
            } else {
                console.error(`Elemento com o seletor '${selector}' não encontrado.`);
            }
        }
    
        // Inicializa com o conteúdo do primeiro botão visível
        updateActiveButton(document.getElementById('button1')); // Inicializa o primeiro botão como ativo
    
        // Adiciona evento de clique a todos os botões
        buttons.forEach(button => {
            button.addEventListener('click', function() {
                const buttonId = this.id; // Assuma que cada botão tem um id único correspondente (button1, button2, etc.)
                const buttonNumber = buttonId.replace('button', ''); // Extrai o número do ID do botão (ex: '1' de 'button1')
                const contentId = `content${buttonNumber}`;
                updateActiveButton(this);
                hideTooltips();
                simulateButtonClick(buttonNumber); // Chama a função passando o número do botão
            });
        });
    
        // Evento para capturar mudança de slide
      	// ATUALIZE O VALOR DO ID
        jQuery('#ID_PERSONALIZADO_DO_SLIDE .jet-listing-grid__slider').on('afterChange', function(event, slick, currentSlide) {
            const activeSlideIndex = currentSlide + 1; // Índices dos slides começam em 0, então somamos 1
            const activeButton = document.getElementById(`button${activeSlideIndex}`);
            updateActiveButton(activeButton);
            hideTooltips();
        });
    
    });
</script>

<!-- CSS ADICIONAL OPCIONAL -->
<style>
.button-class {
    cursor: pointer !important;
}

.button-class.active-button,
.button-class:hover,
.button-class:focus {
    background-color: #001726 !important;
    transition: all linear 0.2s;
}

.button-class.active-button p,
.button-class:hover p,
.button-class:focus p {
    color: #EDEDED !important;
    transition: all linear 0.2s;
}
</style>
<!-- CSS ADICIONAL OPCIONAL -->

Publicações recomendadas:



Link Direto

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.

bruno.art.br/?p=5601

ID de Referência: 5601

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato