Получение значения нескольких элементов с помощью JQuery

Я пытаюсь получить значение ячейки таблицы.

Например

<table id='projects'>

        <tr>
        <td id='a'>aaaaa</td>
        <td id='b'>bbbbb</td>
        <td id='c'>ccccc</td>
        <td id='d'>eeeee</td>
        <td id='e'>ddddd</td>
        </tr>
</table>
<a id='test' href='#'>test </a>

Я хочу получить aaaaa, bbbbb, ccccc, eeeee, ddddd и присвоить их массиву

Я считаю, что могу получить значение с помощью кода JQuery ниже

$(document).ready(function(){
    $('#test').click(function(){
    var tableVal=new Array();
    tableVal['a']=$('#a').text();
    tableVal['b']=$('#b').text();
    tableVal['c']=$('#c').text();
    tableVal['d']=$('#d').text();
    tableVal['e']=$('#e').text();   

    })
 });

Однако, я считаю, что он не очень удобен в обслуживании и занимает много кода, если у меня есть 20 тегов. Мне было интересно, смогу ли я сделать это с помощью .each или любым лучшим способом архивировать это. Спасибо за помощь.

Ответ 1

Вы можете сделать что-то вроде ниже,

var tableVal= [];

$('#projects tr:eq(0) td').each (function () {
   tableVal[this.id] = $(this).text();
});

Примечание: : eq (0) - означает 1-й ряд.. Измените соответственно, если вы хотите сделать для всех строк или сообщите мне, если вам нужна помощь в этом.

Ответ 2

Если вы действительно хотите Array, используйте .map() с .toArray().

var tableVal = $('#projects td').map(function(i,v) {
    return $(this).text();
}).toArray();

В противном случае, если вы действительно собираетесь использовать не числовые индексы, вам нужен объект, используя методы в других ответах.

Ответ 3

Да, вы можете:).

var tableVals= {}
$('#projects td').each(function() {
    tableVals[$(this).attr('id')] = $(this).text();
});

Пожалуйста, не забудьте использовать объект вместо массива, если ваши ключи не являются числовыми.

Ответ 4

Сначала укажите tr a id:

<tr id="rowToGetDataFrom">

Затем вы можете получить массив, который вы хотите, например:

var tableVal = $('#rowToGetDataFrom td').map(function () { return $(this).text(); });

Демо: http://jsfiddle.net/alecgorge/3ApnB/

Ответ 5

Try:

var tableVal = [];
$('#test').click(
    function(){
        $('#projects td').each(
             function(){
                  tableVal.push($(this).text());
             });
    });