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
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.