Ir para conteúdo

POWERED BY:

Arquivado

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

Leo Barreto

Pegar índice de uma tabela dinâmica

Recommended Posts

Pesquiser na net e não encontrei, mais uma vez - se já tiver um post sobre o assunto é só postar o link - estou aqui com uma dúvida.

 

a função abaixo é chamada no window.onload para criar uma tabela com os "títulos" CORES | P | M | G | GG

function addtam(){
  $.ajax({
	 type: "POST",
	 url: "_application/_itens/showSize.php",
	 dataType: "json",
	 success: function(tam){
	  
	  var totals = 0;
	  var valunit;
	  totals++;
	  tbl = document.getElementById("itensproduto");

	  var novaLinha = tbl.insertRow(0);
	  var novaCelula;

	  if(totals%2 === 0) cl = "#F5E9EC";
	  else cl = "#FBF6F7";

	  novaCelula = novaLinha.insertCell(0);
	  novaCelula.align = "center";
	  novaCelula.innerHTML = "CORES";

	  $.each(tam, function(key, value){
		//função para add com os tamanhos
		
		novaCelula = novaLinha.insertCell();
		novaCelula.align = "center";
		novaCelula.style.backgroundColor = cl;
		novaCelula.innerHTML = "<input type='text' class='idtam' value='"+value.id+"' size='3' >"+value.nome;
	  });

	  novaCelula = novaLinha.insertCell(5);
	  novaCelula.align = "center";
	  novaCelula.style.backgroundColor = cl;
	  novaCelula.innerHTML = "TOTAL";
	 }
  });
}

e estou utilizando a função abaixo para pegar o índice da mesma.

$('input').click(function() {
 var ind = $(this).index('input');
 alert(ind);
});

Porém o que acontece: Se clico em um input fixo da tabela (a última linha não é dinâmica) o índice que me traz é o 5, por exemplo, porque ele conta o input de uma outra tabela + os 4 criados dinamicamente no "título" da tabela.

 

Alguém já passou por isso, uma luz?

 

Grato pela ajuda e paciência desde já!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá meu amigo, tente usar o live.

 

 

$('input').live('click', function() {
var ind = $(this).index('input');
alert(ind);
});

 

Para trabalhar com elementos criados dinâmicamente com o jQuery utilize sempre o live().

 

Espero que ajude, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá meu amigo, tente usar o live.

$('input').live('click', function() {
var ind = $(this).index('input');
alert(ind);
});

Para trabalhar com elementos criados dinâmicamente com o jQuery utilize sempre o live().

 

Espero que ajude, abraço.

 

Não funcionou, amigo.

Então fui pesquisar sobre o .live() e no exemplo do site http://www.w3schools.com/jquery/event_live.asp

informa:

Note: The live() method was deprecated in jQuery version 1.7, and removed in version 1.9. We have used an earlier version of jQuery (1.7 in the script tag), for this example to work.

 

Então tentei o código abaixo, porém sem o resultado esperado

$('input').on('click', function(){
  var ind = $(this).index('input');
  alert(ind);
});

Consegui resolver utilizando o código

$('#itensproduto').on('click', 'input', function(){
  var ind = $(this).index('input');
  alert(ind);
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim! Ainda bem que você me avisou, vou até alterar um projeto aqui que estou criando.

 

Nele estou usando o live() mas funciona, deve ser porque estou com uma versão antiga do jQuery, valeu meu amigo.

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.