Ir para conteúdo

POWERED BY:

Arquivado

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

sambuka

Parar uma função com mouseenter

Recommended Posts

Galera, é o seguinte.

 

Quando eu tiro o mouse de dentro da div(mouseleave) eu chamo uma função, e ela fica executando de 25 em 25 segundos, ok ate ai blz.

 

Porém quando eu colocar o mouse sobre a div(mouseenter) eu quero que a função pare de ser executada.

 

Eu não estou conseguindo fazer a função parar, já fiz de tudo e ela continua sendo executada.

 

O que estou fazendo de errado ? o que devo fazer para funcionar ?

 

Obrigado :)

 

A função que fica executando é a buscar();

 

e la no final do código tem as funções do mouseleave e mouseenter.

<script type="text/javascript" language="javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript">
var permicao = 1; //Variavel que indicara a permicao da funcao "buscar_auxiliar()"    
//Funcao que chamara o arquivo "buscar.php" para varrer o banco
function buscar(binario){
	var busca_ajax; 	
	//Verificao navegador
	if(window.XMLHttpRequest) {
		busca_ajax = new XMLHttpRequest();
	}
	
	else if(window.ActiveXObject) {
		busca_ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}

	// Arquivo PHP juntamente com o valor digitado no campo, e a função "escape()" converte os caracteres especiais em hexadecimal iniciado por "%".
	var url = "consulta/busca_postagem.php?verifica=ok&grupo=<?php echo $codigogrupo?>&nomegrupo=<?php echo $nomegrupo ?>";
	
	// Chamada do metodo open e envia os dados para o arquivo buscar.php.
	busca_ajax.open("Get", url, true);

	// Quando o objeto recebe o retorno, chamamos a seguinte função;
	busca_ajax.onreadystatechange = function(){

		//Aguarda o ajax executar
		if(busca_ajax.readyState == 4 && busca_ajax.status == 200) {

			//Resposta retornada pelo "buscar.php" via "echo"
			var resposta = busca_ajax.responseText;
			
			//Verifica se e um conteudo vazio.
			if(resposta != "" && !(resposta.match(/^\s+$/))){
				//Criamos uma "div" com o conteudo encontrado dentro e colocamos tudo dentro da tag "p".
				$("#postbase").html(resposta);
				$("#postbase").find("script").each(function(i) {
					eval($(this).text());
				});
				
				permicao = 0; //Coloca 1 para que a função "buscar_auxiliar()" consiga chamar novamente esta função ("buscar(binario)").
			}
				
			else{
				permicao = 0; //Caso algo de errado no "if" coloca a permicao para "1", permitindo outra busca nesta funcao ("buscar(binario)") chamada pela função "buscar_auxiliar()"
			}            
		}    
	}   	
}

//------------------------------------------------------------------------------------
function buscar_auxiliar(){ //Funcao auxiliar que serve para chamar a funcao "buscar(binario)", mas impedindo que a mesma seja chamada novamente antes de realizar o pedido de busca anterior.
    if(permicao != 0){
		//Verifica se tem permicao para chamar a funcao "buscar(binario)" (para nao chamar a outra funcao antes que a mesma termine as buscas).
        permicao = 0; //Altera a variavel "permicao" para que este "if" não permita que a funcao "buscar(binario)" não seja chamada antes do tempo.		
       window.setInterval("buscar(0)", 25000);  //Chama a funcao "buscar(binario)".	   
    }
}

//------------------------------------------------------------------------------------
//Variavel usada dentro da funcao "busca_automatica()", para que o botao "busca_ajax automática" chame a funcao "busca_automatica()" apenas uma vez.
$(function() {	
	$('#postbase').on("mouseleave",function(){		
		var bloqueio= 0; 
		if(bloqueio == 0){
			 //Verifica se a variavel esta com o valor original, evitando que o comando "window.setInterval" seja chamado mais de uma vez.
			permicao =1;
			buscar_auxiliar(); //Funçao ativada automaticamente de tempo em tempo.
			bloqueio = 1; //Muda o valor da variavel, impedindo que o "if" deixe executar novamente o comando "window.setInterval".
	
		}
	}).on("mouseenter",function(){	
		permicao =0;
	});
});


$(function() {	
	$('#basepaginas').on("mouseleave",function(){			
		var bloqueio= 0; 
		if(bloqueio == 0){
			 //Verifica se a variavel esta com o valor original, evitando que o comando "window.setInterval" seja chamado mais de uma vez.
			buscar_auxiliar();
			bloqueio = 1; //Muda o valor da variavel, impedindo que o "if" deixe executar novamente o comando "window.setInterval".
	
		}
	}).on("mouseenter",function(){	
		permicao =0;
	});
});
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função setInterval, retorna um ponteiro que ao ser "apagado", faz parar o loop.

 

limpe com clearInterval() o retorno do setInterval, que irá "parar a tua função"

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função setInterval, retorna um ponteiro que ao ser "apagado", faz parar o loop.

 

limpe com clearInterval() o retorno do setInterval, que irá "parar a tua função"

Meuuuuu que riqueza kkkkkk, funcionando perfeito agora *-*, muito obrigado!

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.