Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

michelmfreitas

Como disparar um evento de click a partir de outro evento?

Recommended Posts

Olá Pessoal, tudo bem?

Preciso que, quando o usuário clicar em determinado botão, ele dispare o mesmo evento click em outro botão.
Exemplo: Tenho várias galerias de fotos dentro de uma container controlado por abas, e quando ele chega na última foto da primeira galeria, o botão da direita deve levar para a próxima aba, primeiro elemento.
//se o elemento for o ultimo da galeria
if($('.item:last-child').hasClass('active')){

//ele dispara o click na proxima aba da galeria


}


Podem me ajudar? =)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função .trigger() dispara um evento. Ai no teu caso vc faz:

 

$('#proximo_elemento').trigger('click');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona com o evento 'onclick' ? Utilizo as Tabs do Bootstrap e dentro do elemento <a> possuo um evento onclick.

 

Ou apenas a função 'click' neste elemento?

 

Preciso configurar uma função anteriormente para tal ação?

$('#proximo_elemento').trigger('onclick');

Compartilhar este post


Link para o post
Compartilhar em outros sites

o evento é "click" o "listener" que é "onclick".

Então vc faz .trigger('click') e não .trigger('onclick'), okay ?

 

É assim com todos os eventos.

onchange é o listener, change é o evento

onblur é o listener, blur é o evento

..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, Bruno!

 

Mas seguinte, tenho que configurar anteriormente esse evento de click? Eu utilizo o Tab Bar do Bootstrap, que já deve haver um evento de 'click' configurado.
var qtd = $("#menuGaleria ul li").length;
var ativo = $("#menuGaleria ul li.active").index();
//pegando proximo item e 'clicando' nele.
$("#menuGaleria ul li").eq(ativo+1).trigger('click');

O código acima não gera efeito. A aba não muda, nada acontece. Está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente sim, mas não dá para eu afirmar.

 

Aparece algo no console de erros ? Ctrl + Shift + J no Firefox ou Chrome.

 

Além disso, essa estratégia de "clicar" me parece bem estranha.

Qual é o efeito que vc está fazendo?

 

Existe um slideshow dentro de cada tab, e depois que o slideshow de uma tab terminar, ele deve ativar a outra tab ? é isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, em partes.

 

Porém, ele de alguma forma, executa o código mesmo não sendo a última foto da galeria.

self.element.find('.js-galery-zoom').on('slid.bs.carousel',function(e){
			
	var idx=self.element.find('.js-galery-zoom .item.active').index();
			
	self.plot_descricao(data,idx);
			
	self.element.find('.carousel').carousel('pause');
			
	self.element.find('.btn-thumb-galery').removeClass('active');
	self.element.find('.btn-thumb-galery[data-index="'+idx+'"]').addClass('active');
			
	if(self.slideshowenabled){
		self.counttonext();
	}

			
	var galeriaAtiva = $('.galeria[data-active=1]');
	var qtdAbas = $("#menuGaleria ul li").length;
	var ativo = $("#menuGaleria ul li.active").index();
			
	if($('.galeria[data-active=1] .carousel-inner .item:last-child').hasClass('active')){
		galeriaAtiva.find('.carousel-control.right').click(function(){

		//alteração de aba
		if($("#menuGaleria ul li.active").index()+1 < qtdAbas){
			$("#menuGaleria ul li").removeClass('active');
			$("#menuGaleria ul li").eq(ativo+1).addClass('active');
		}else{
			$("#menuGaleria ul li").removeClass('active');
			$("#menuGaleria ul li").eq(0).addClass('active');
		}

		//alteração de galeria
		galeriaAtiva.css('display', 'none');
		galeriaAtiva.removeAttr('data-active');
		$('.galeria').eq(ativo+1).css('display', 'block').attr('data-active', '1');



			  	});
			}

			
		});

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.