Obter uma lista separada por vírgulas dos primeiros valores de células para linhas com nome de classe (usando Jquery)?
Pergunta
Tentando obter IDs da tabela abaixo quando uma linha é selecionada.Por exemplo, o jquery deve retornar:"12,14"..Meu código abaixo retorna string vazia?
Meu HTML:
<table id="display" width="100%">
<thead>
<tr>
<th>ID</th>
<th>first</th>
<th>last</th>
<th>number</th>
</tr>
</thead>
<tbody>
...etc...
<tr class="selected">
<td>12</td>
<td>Bob</td>
<td>Smith</td>
<td>9999</td>
</tr>
<tr>
<td>13</td>
<td>Lee</td>
<td>Smith</td>
<td>8888</td>
</tr>
<tr class="selected">
<td>14</td>
<td>JJ</td>
<td>Wolf</td>
<td>77777</td>
</tr>
... etc..
</table>
Meu Jquery:
var nameIDs = $('table tr.selected td:first').map(function () {
return this.value;
}).get().join(',');
Solução
O value
não está definido para td, você precisa usar this.innerText
ou this.innerHTML
, Use também first-child
em vez de first
var nameIDs = $('table tr.selected td:first-child').map(function () {
return this.innerText;
}).get().join(',');
Editar
O html também é inválido, você perdeu o fechamento </td>
em segundo td
para todas as linhas.
Mudar
<td>Smith<td>
Para
<td>Smith</td>
Outras dicas
Este código pode ajudá-lo
var elems = $(".selected>td:first-child");
for(var key in elems )
elems[key] = $(elems[key]).html();
var values = elems.join(",");
O resultado está na string values
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow