Ir para conteúdo

POWERED BY:

Arquivado

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

João Corrêa

[resolvido]Função dentro da Função

Recommended Posts

Olá pessoal tenho o seguinte código:

 

<script type="text/javascript">
$(document).ready(function() {
		
	for(var i=2; i<10; i++)
	{
   $('#slickbox'+i).hide();
  $('a#slick-show'+i).click(function() {
	  //alert(i);
   	$('#slickbox'+i).show('fast');
	$('#label'+i).hide();
	return false;

   });
   }
   
});

</script>

O meu problema está dentro desta função:

 

$('a#slick-show'+i).click(function() {
	  //alert(i);
   	$('#slickbox'+i).show('fast');
	$('#label'+i).hide();
	return false;

   });
O valor de i em
$('#slickbox'+i).show('fast');	$('#label'+i).hide();

fica fixo em 10 e não sai disto...por que i não vai incrementando?

 

Obrigado,

 

João

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica fixo em 10? Não entendi e pelo que vi no seu script nada esta errado (era para rodar sem problemas).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica fixo em 10? Não entendi e pelo que vi no seu script nada esta errado (era para rodar sem problemas).

Então o que me me parece é que a segunda função não recebe o valor de i a todo momento, somente no final do ciclo.

 

Muito estranho.

 

João

Compartilhar este post


Link para o post
Compartilhar em outros sites

João,

Analisando novamente acabei percebendo o porque do problema:

 

O que ocorre é que, quando o evento click é executado o loop já terminou então o que esta dentro da função não é de fato executado.

 

Uma alternativa seria, ao invés de você usar uma função anonima como parametro para o metodo click da jQuery, você montar sua função usando objeto Function do java script:

 

Exemplo:

 

for(var i=2; i<10; i++)
{
	var funcTemp = new Function("$('#slickbox"+ i + "').show('fast');  $('#label"+i+"').hide(); return false;");
	 $('#slickbox'+i).hide();
	  $('a#slick-show'+i).click(funcTemp);
   }

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

João,

Analisando novamente acabei percebendo o porque do problema:

 

O que ocorre é que, quando o evento click é executado o loop já terminou então o que esta dentro da função não é de fato executado.

 

Uma alternativa seria, ao invés de você usar uma função anonima como parametro para o metodo click da jQuery, você montar sua função usando objeto Function do java script:

 

Exemplo:

 

for(var i=2; i<10; i++)
{
	var funcTemp = new Function("$('#slickbox"+ i + "').show('fast');  $('#label"+i+"').hide(); return false;");
	 $('#slickbox'+i).hide();
	  $('a#slick-show'+i).click(funcTemp);
   }

Abraços

Funcionou perfeitamente, 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.