Ir para conteúdo

POWERED BY:

Arquivado

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

nikeweiand

Como criar callback em uma função propria usando jquery?

Recommended Posts

Boa tarde galera!

 

Estou pesquisando como criar uma função em jquery e passar nos parametros uma função que será chamada ao terminar a execução da primeira, ou seja, um callback.... Igual aos callback dos metodos proprias do jquery exemplo:

$().animte({

},function() {

});

Alguem sabe me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para estender o jQuery (adicionar novas funções) use o método [inline]jQuery.fn.extend[/inline] ou casos sejam apenas uma função você pode adicioná-la diretamente ao [inline]jQuery.fn[/inline]. Quando uma função é passada como parâmetro você pode chamá-la normalmente.

jQuery.fn.minhaFuncao = function(callback) {
    callback(); // chama o callback
};
$('div').minhaFuncao(function(){
    alert('Olá');
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se entendi errado, ou se não é bem isso que esperava @cahe7cb... Mas vamos la novamente:

 

Seguindo meu exemplo novamente:

$().minhaFuncao({
   // aqui vai a execucao da funcao denominida "minhaFuncao"
},function() {
   // aqui vai o que eu quero executar ao completar toda a execucao da "minhaFuncao"
});

A duvida é como faço a execucao de algo após o processamento da primeira funcao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não tem como eu ser mais simples e prático do que no primeiro post, mas vamos lá.

 

Para adicionar uma função ao núcleo do jQuery você faz:

jQuery.fn.minhaFuncao = function() {
	alert('Olá');
};
Agora eu tenho minha função customizada e posso usar ela como quiser:

$().minhaFuncao(); // vai exibir "Olá" na tela
Para executar a função de callback você tem que passá-la como argumento para sua função, e então depois você pode chamar ela:

jQuery.fn.minhaFuncao = function(funcao) {
	/*
	* Faça o que você quiser aqui
	*/

	funcao(); // ao final você executa o callback
};
Como você pode ver, a função acima recebe um argumento chamado [inline]funcao[/inline], ela vai ser o callback que deve ser executado.

 

Agora eu posso chamar minha função:

$().minhaFuncao(function(){
	alert('Olá');
});
Acima eu chamei [inline]minhaFuncao[/inline] passando como primeiro argumento a função de callback que vai exibir "Olá" na tela.

 

Se não deu para entender sugiro que estude mais Javascript, principalmente sua sintaxe. Ou espere, talvez alguém possa fazer uma explicação melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com uma dúvida parecida

 

tenho uma função openWinow()

 

jQuery.fn.openWindow = function() {
  $('#midia').fadeOut("fast");
  $('#rodape').slideUp("slow"); 
  $('#window').fadeIn("fast").animate({marginLeft:0});
};

queria chama-lo assim:

$('#midia #audio').click(function() {	
	$().openWindow(function() {
		alert('teste');
	});		
});	

a funcao openWindow funciona mas o alert não aparece

		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não tem nada a ver com jQuery. Se vc não vai usar o objeto DOM, chamando $().t(); então vc não deveria usar um plugin jQuery para isso, e sim apenas uma simples função javascript. E executar o callback. Veja:

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>


<button id="btn">Click</button>

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
var openWindow = function(callback) {
  console.log('openWindow');
  callback();
};

$('#btn').on('click', function() {
  openWindow(function() {
    console.log('click');
  });
});
</script>
</body>
</html>
quando clicar aparecerá os 2 consoles no Ctrl + Shift + J do Firefox ou Chrome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não consegui, vou explicar melhor aproveitando esse exemplo...

O que eu quero é que a função click só apareca depois que o fadeOut termine de ser executado

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>


<button id="btn">Click</button>

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
var openWindow = function(callback) {
  $('#btn').fadeOut(2000);
  //console.log('openWindow');
  callback();
};

$('#btn').on('click', function() {
  openWindow(function() {
    console.log('click');
  });
});
</script>
</body>
</html>

...a segunda função é pesada e trava a animação, por isso tenho que executar por partes

Compartilhar este post


Link para o post
Compartilhar em outros sites
  $('#btn').fadeOut(2000, callback);

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.