Ir ao conteúdo
  • Cadastre-se

Como interromper uma função


ismalty

Posts recomendados

Galera, estou tendo um problema com funções que podem gerar varios resultados.

Vou colocar um codigo mais simples do q estou implementando pra facilitar:

O problema é que queria que quando clicasse em #avisos, saísse completamente da função, mas o que acontece é que fica rodando dentro do if, e quando clico duas vezes no documento muda o texto dentro de #avisos.

Ja tentei um monte de coisa e nada da certo, alguem sabe o que posso fazer?

desde de ja, grato

o codigo nao tinha ficado endentado, ai coloquei pra ajudar a entender:

function mouse(){
if ( contador === true )
{
var cont = 0;
$(document).bind("mousemove", function(evento){
var xcaminho = evento.pageX;
var ycaminho = evento.pageY;
cont++;
$("#avisos").click(function(){
$(document).unbind("mousemove");
contador = false;
return null;
mouse.stopImmediatePropagation();
})
$(document).dblclick(function(){
$("#avisos").html("Documento <br>Cont = "+cont+"<br>Contador = "+contador);
})
});
}
}

Link para o comentário
Compartilhar em outros sites

  • Moderador

Olá,

Talvez não esteja usando a função stopImmediatePropagation(); corretamente.

Note que você está usando o nome da função seguido da função de parar.. o jeito certo de utilizar é adicionando um argumento e chamando por este argumento.

tente desta maneira:


function mouse(){
if ( contador === true )
{
var cont = 0;
$(document).bind("mousemove", function(evento){
var xcaminho = evento.pageX;
var ycaminho = evento.pageY;
cont++;
$("#avisos").click(function([COLOR="Red"]e[/COLOR]){
$(document).unbind("mousemove");
contador = false;
return null;
[COLOR="red"]e.stopImmediatePropagation();[/COLOR]
})
$(document).dblclick(function(){
$("#avisos").html("Documento <br>Cont = "+cont+"<br>Contador = "+contador);
})
});
}
}

Link para o comentário
Compartilhar em outros sites

  • Moderador

Faça o exemplo com o site http://jsfiddle.net/

é um testador online. assim podemos estar o código e tentar resolver.

note que lá possui 4 espaços, o html fica no topo na esquerda, o jquery fica no quadrado abaixo.. o css fica no topo a direta. ( selecione o jquery na lista de scripts) .. depois clica em save.. e cola o link aqui.

Link para o comentário
Compartilhar em outros sites

mudando o return null de lugar tb nao mudo nd...

o link com o codigo funcionando é

http://jsfiddle.net/xYKwP/

o problema é que quando clica no objeto (o quadrado cinza) não para de executar a função, o que acontece é que so desabilita do "bind("mousemove")". Tentei todas maneiras que já vi na net, que é colocar um if, colocar o return null e o event.stopImmediatePropagation(), mas nd da certo...

Galera, fazendo uns testes descobri o seguinte:

A função so é executada uma vez, porém, a partir da sua execução ela cria os eventos click e dblclick, que continuam operantes mesmo depois que sai da função. Ai o unico jeito é usando .bind para criar os eventos e .unbind para "deletar" o evento.

Valeu pela ajuda galera

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...