Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

[Resolvido] Checar se evento ocorreu

Recommended Posts

Galera,

 

estou tentando aplicar um evento de MOUSEENTER/MOUSELEAVE numa área do site e executar uma animação.

Eu já consegui fazer isso, súper simples, mas dependendo da velocidade que se passa o mouse, ele dá um bug...

 

Tipo assim:

 

jQuery("#sliderImovel").mouseenter(function () {
	jQuery(this).delay(1500,function(){		
		jQuery("#sliderHit").fadeOut("fast");
		jQuery("#sliderImovel").animate({
		  "height": 400
		}, "slow");
		jQuery("#wrapSlider").fadeIn("slow");
	});
});	

jQuery("#sliderImovel").mouseleave(function () {
	jQuery(this).delay(1500,function(){
		jQuery("#sliderHit").fadeIn("normal");
		jQuery("#sliderImovel").animate({
		  "height": 50
		}, "slow");
		jQuery("#wrapSlider").fadeOut("fast");
	});
});

O que eu queria fazer aqui, era verificar, depois do DELAY, se o mouse AINDA está dentro da DIV...

jQuery("#sliderImovel").mouseenter(function () {
	jQuery(this).delay(1500,function(){
		if(jQuery(this).mouseenter()){
			/*
				Resto do código
			*/
		}
	});
});

Mas desse jeito, ele sempre executa o código, mesmo se eu só passar o mouse rapidamente pela div e já tirar...

 

Tem como fazer o que eu estou querendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois bem...

 

o uso do "mouseOver" e "mouseOut" pra mim, está praticamente abolido. O "MouseEnter/MouseLeave" faz a mesma coisa, e não tem o bug de quando se põe o mouse sobre algum elemento de dentro do que foi chamado pelo evento, ele sair do estado mouseOver e considerar mouseOut.

 

 

Eu creio que se tiver alguma forma de checar se o evento "mouseEnter" continua ativo, iria resolver esse meu problema... =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

P3rukao,

 

Acho que entendi o seu problema. Quando o mouse entra no elemento, após um determinado tempo, se o mouse continuar em cima, efeitos visuais deverão acontecer. Será que uma variável auxiliar que registra o estado atual do mouse sobre o elemento não pode ajudar?

 

var sliderStatus = false;

jQuery("#sliderImovel").mouseenter(function () {
        sliderStatus = true;
        jQuery(this).delay(1500,function(){             
                if (!sliderStatus) return;
                jQuery("#sliderHit").fadeOut("fast");
                jQuery("#sliderImovel").animate({
                  "height": 400
                }, "slow");
                jQuery("#wrapSlider").fadeIn("slow");
        });
});    

jQuery("#sliderImovel").mouseleave(function () {
        sliderStatus = false;
        jQuery(this).delay(1500,function(){
                if (sliderStatus) return;
                jQuery("#sliderHit").fadeIn("normal");
                jQuery("#sliderImovel").animate({
                  "height": 50
                }, "slow");
                jQuery("#wrapSlider").fadeOut("fast");
        });
});

Não sei se funciona, não testei. Mas acho que por esse caminho pode ser que dê certo. Diga aí se funcionou.

 

Abs...

Flávio

http://javascript.singuska.com/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Iaew Flávio,

 

deu certinho a tua dica. A solução é bem simples, mas não tinha me passado pela cabeça... xD

 

Eu estava pensando em alguma forma de detectar o tempo que o mouse fica em cima do elemento para ativar a animação, ou algo do tipo, mas a tua dica já me ajudou bastante.

 

Obrigado pela ajuda. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

Abs []'s

Okatsura Lau

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.