Pegar o ID de uma linha clicada na tabela

5,545 views
Skip to first unread message

Jeovane Reges

unread,
May 9, 2013, 11:34:17 AM5/9/13
to jque...@googlegroups.com
Olá galera, boa tarde.
Pessoal, o que eu gostaria de saber é como que faço para pegar o id de uma linha da tabela que estar contida dentro da tag a.
Essa minha tabela é criada dinamicamente de acordo com o resultado que é recebido como saída. O código que gera essa tabela pode ser visualizado AQUI.
Para pegar o id estou tentando fazer da seguinte maneira abaixo, no entanto, sem sucesso.

  1. $("#tablesorter a").click(function(){
  2.     var id = $(this).attr("id");
  3.     alert(id);
  4. });

A tabela gerada pode ser visualizada neste link
Alguém sabe me dizer o que devo alterar para atingir o meu objetivo?
Desde já obrigado pela ajuda de todos.
Abraços.

Tiago Celestino

unread,
May 9, 2013, 11:45:03 AM5/9/13
to jque...@googlegroups.com
http://jsfiddle.net/fEjwP/ - assim deve te ajudar.



2013/5/9 Jeovane Reges <jeovan...@gmail.com>
--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Rafael Sirotheau

unread,
May 9, 2013, 12:03:32 PM5/9/13
to jquery-br
Não vai funcionar com jQuery porque está errado. Atributos id não devem conter espaçamentos e/ou caracteres especiais. Pois eles são usados em âncoras e no css. Se sua intenção é utilizar algum atributo que permita caracteres especiais, utilize o title.

Não recomendo manter o código desta forma, javascript puro funciona sim, mas seu html está errado.

http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html
--
Linkedin

Front-end Web Developer
[11] 9 6452 1384

Manoel Neto

unread,
May 9, 2013, 12:31:41 PM5/9/13
to jque...@googlegroups.com
+1 Rafael.

Utilize title, data-title, data-SOMETHING, data-value, mas não do jeito que está.


2013/5/9 Rafael Sirotheau <rsiro...@gmail.com>



--
Atenciosamente,

Manoel Quirino Neto

Jeovane Reges

unread,
May 9, 2013, 12:37:17 PM5/9/13
to jque...@googlegroups.com
Olá pessoal, obrigado pelo feedback de vocês.
Mudei para title, no entanto, ainda não estou conseguindo pegar o valor do atributo desejado.
Como eu disse, a tabela é criada dinamicamente, ou seja, em buffer.
Se eu der um CTRL + U na página onde a tabela é gerada aparece simplesmente a div vazia onde ela é criada.
Porém, no firebug consigo visualiza-la tranquilamente.

Alguém sabe como que faço para pegar o valor do atributo que estou desejando?
Desde já obrigado pela ajuda de todos.

Manoel Neto

unread,
May 9, 2013, 12:46:16 PM5/9/13
to jque...@googlegroups.com
  1. Se o elemento #tablesorter for criada dinamicamente, é necessário pegar o elemento pai e fazer o seguinte:


    $("#paiDetablesorter").on('click', '#tablesorter a', function(){
  1.     var id = $(this).attr("id");
  2.     alert(id);
  1. });

    mas caso for gerado apenas os elementos dentro de tablesorter, basta fazer

    1. $("#tablesorter").on('click', 'a', function(){
    1.     var id = $(this).attr("id");
    2.     alert(id);
    3. });


    2013/5/9 Jeovane Reges <jeovan...@gmail.com>

    --
    --
    Grupo de jQuery Brasil.
     
    REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
     
    USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
     
    Email: jque...@googlegroups.com
    Biba: jquery-br+...@googlegroups.com
    Site: http://groups.google.com/group/jquery-br?hl=pt-BR
     
    ---
    Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
    Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para jquery-br+...@googlegroups.com.
    Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
     
     

    Jeovane Reges

    unread,
    May 9, 2013, 12:53:00 PM5/9/13
    to jque...@googlegroups.com
    Agora foi :-D
    Ficou da seguinte maneira abaixo

    1. $(".content").on('click', '#tablesorter a', function(){
    2.     var title = $(this).attr("title");
    3.     alert(title);
    4. });

    Muito obrigado pela ajuda de todos.
    Até a próxima, abraço.

    Manoel Neto

    unread,
    May 9, 2013, 12:54:12 PM5/9/13
    to jque...@googlegroups.com
    Agora cara, procura trocar essa id tablesorter, já que é um elemento que vai ser gerado mais de uma vez, coloca uma classe. id deve ser único.


    2013/5/9 Jeovane Reges <jeovan...@gmail.com>

    Jeovane Reges

    unread,
    May 9, 2013, 1:00:20 PM5/9/13
    to jque...@googlegroups.com
    Eu sempre destruo a tabela antes de cria-la novamente com elemento "bDestroy": true
    Por isso que não me preocupei em coloca-la como uma class :-)
    Mas, obrigado pelo toque. Caso seja necessário exibir mais de uma tabela, irei apenas usar class ao invés de id

    Neto Neto

    unread,
    May 9, 2013, 1:30:32 PM5/9/13
    to jque...@googlegroups.com
    Cara, coloque o id na linha mesmo, como você queria antes, o id da linha. Quando o cara clicar no link, você vai subindo até chegar na tr.


    Neto - Web developer
    +55 81-9916.1778


    2013/5/9 Jeovane Reges <jeovan...@gmail.com>

    Giovanni Donda

    unread,
    May 9, 2013, 1:54:17 PM5/9/13
    to jque...@googlegroups.com
    e se usar assim

    1. $("tr" , "#tablesorter tbody").click(function(){
    2.     var id = $("a" , this).attr("id");
    3.     alert(id);
    4. });

    não testei....

    Att,
    Giovanni Donda

    Juarez Junior

    unread,
    May 9, 2013, 2:09:45 PM5/9/13
    to jque...@googlegroups.com

    Neste caso, eventos em muitos elementos, em boas práticas, é melhor utilizar o "delegate". Um único evento filtrado pelo target.

    Para chegar no id do tr, bastar utilizar, neste caso de click na tag a, this.parentNode.parentNode.id

    this -> tag a clicada
    .parentNode -> td (cell)
    .parentNode -> tr (row)
    .id

      $('table').on('click','a', function(evt){
        evt.preventDefault();
      });

    [s]


    2013/5/9 Giovanni Donda <ph...@dsinterativa.com.br>

    Jeovane Reges

    unread,
    May 9, 2013, 2:22:48 PM5/9/13
    to jque...@googlegroups.com
    Quantas maneiras diferentes de chegar a solução de um mesmo problema.
    Muito bom isso :-)
    Obrigado pela ajuda de todos :-D


    Em quinta-feira, 9 de maio de 2013 12h34min17s UTC-3, Jeovane Reges escreveu:

    Jeovane Reges

    unread,
    May 9, 2013, 3:49:17 PM5/9/13
    to jque...@googlegroups.com
    Pessoal, dos exemplos que foram postados o que mais deu certo foi o seguinte abaixo.
    No entanto, quando dou um console.log(title) fora da function nada é "imprimido"

    1. var title;
    1. $(".content").on("click", "#tablesorter a", function(){
    1.     title = $(this).attr("title");
    1. })
      console.log(title);


    Poderiam me dar mais um dica de como fazer para imprimir os valores clicados fora da function?
    Desde já obrigado pela ajuda de todos.

    Em quinta-feira, 9 de maio de 2013 12h34min17s UTC-3, Jeovane Reges escreveu:

    Neto Neto

    unread,
    May 9, 2013, 3:55:59 PM5/9/13
    to jque...@googlegroups.com
    Isso porque só roda o que está em function. o console.log vai rodar apenas uma vez, quando o código for lido pelo navegador.

    Neto - Web developer
    +55 81-9916.1778


    2013/5/9 Jeovane Reges <jeovan...@gmail.com>
    Pessoal, dos exemplos que foram postados o que mais deu certo foi o seguinte abaixo.

    Tiago Celestino

    unread,
    May 9, 2013, 4:09:50 PM5/9/13
    to jque...@googlegroups.com
    @Neto falou tudo ai agora.

    @Jeovane, tu pode criar uma função que vai receber esse valor e faz o que você quer com ele. Mais ou menos isso: http://jsfiddle.net/aaAhD/
    2013/5/9 Neto Neto <sputin...@gmail.com>

    Jeovane Reges

    unread,
    May 9, 2013, 4:27:28 PM5/9/13
    to jque...@googlegroups.com
    Tiago Celestino entendi perfeitamente :-D
    Obrigado pelo feeback de todos.
    Abraços.

    Em quinta-feira, 9 de maio de 2013 12h34min17s UTC-3, Jeovane Reges escreveu:
    Reply all
    Reply to author
    Forward
    0 new messages