Ir para conteúdo

POWERED BY:

Arquivado

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

CyriX

Cancelar evento setTimeout

Recommended Posts

Hey Folks,

 

Estou com uma função para fazer fadeOut em uma DIV, mas gostaria de suspender o processo fadeOut caso fosse disparado o 'mouseover'.

 

O meu código

function (){
     condicao{
  setTimeout(function() {
    jQuery(".cartView").fadeOut(1000);
  }, 2000);
 }

}

seria correto usar a função a seguir para cancelar o fadeOut na DIV cartView? tentei realizar o uso do código mas algo não andou bem.

 

$('document').ready(function() {
$(function() {
$(".cartView").mouseover(function (){
     if($(this).is(':animated')) {
        $(this).stop().animate({opacity:'100'});
     }
   });
});
});

 

 

erro de console do chrome: TypeError: Cannot call method 'mouseover' of null

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bergs, mesmo com fadeIn o problema persite pois no console do chrome continua acusando erro no mouseover, mesmo colocando o script após a div.

 

 

tentei colocar o settimeout em uma var 'timer' de depois limpar mas não adiantou.

 

var time = null;
var time = setTimeout(function() {     jQuery(".cartView").fadeOut(1000);   }, 2000);
clearTimeout(time)

Compartilhar este post


Link para o post
Compartilhar em outros sites

não dá para identificar o que tá acontecendo no seu código com o que vc postou, vejo que vc tá usando jquery vc tá colocando tudo dentro do ready do jquery?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Berg

 

meu script por inteiro é este


		function setLocationAjax(url,id){
	        url += '&isAjax=1';
	        url = url.replace("checkout/cart","ajax/index");
	        document.getElementById("cart-sidebar").className = "loading";
		document.getElementById("cart-load").className = "cart-loading";
	            try {
	                jQuery.ajax({
	                    url:url,
	                    dataType:'json',
	                    success:function (data) {
	                          if(jQuery('.top-cart')){
	                              jQuery('.top-cart').replaceWith(data.sidebar);
				      document.getElementById("cart-load").className = "cart-disable";
				      document.getElementById("cart-sidebar").className = "mini-products-list";
	                          }
	  					jQuery('.cartView').show();
	  					setTimeout(function() {
	  					  	jQuery(".cartView").fadeOut(1000);
	  					}, 2000);
                      	
	                    }
	                });
	            } catch (e) {
	            }   
		    }

 

com o jquery eu exibo e logo em seguida dou um settimeout, mas quero suspender o settimeout, até estou seguindo a documentação do jquery mas mesmo assim não tive exito. segui esse artigo http://docs.jquery.com/Effects/stop#clearQueuegotoEnd

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou sem problemas aqui.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...ransitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Documento sem título</title>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>
<style>
    .cartView {height: 100px; width: 200px; background: #aaa;}
</style>
</head>
<body>
<script>
    $(document).ready(function(){
        jQuery('.cartView').delay(3000).fadeOut(3000);
        jQuery('.cartView').mouseover(function(){
           $(this).stop().animate({opacity: 1}, {duration: 100});
        });
    });
</script>

<div class="cartView">
    teste
</div>
</body>
</html>

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.