Как использовать .each jQuery для получения <th>идентификаторов и установки <td>атрибутов для каждого из них? - PullRequest
0 голосов
/ 25 октября 2018

Я хочу иметь возможность получить идентификаторы каждого <th> и установить для них атрибут данных каждого <td> таблицы.

До:

<table>
<tr>
<th id="1"><th>
<th id="2"><th>
</tr>

<tr>
<td><td>
<td><td>
</tr>

<tr>
<td><td>
<td><td>
</tr>

...

</table>

После:

<table>
<tr>
<th id="1"><th>
<th id="2"><th>
</tr>

<tr>
<td data="1"><td>
<td data="2"><td>
</tr>

<tr>
<td data="1"><td>
<td data="2"><td>
</tr>

...

</table>

Пока у меня есть этот jQuery:

 array = $('table th').map(function(){
        return this.id;
    });

    i = 0;
    $('table tr td').each(function() {

       $(this).attr('data-title', array[i]);
       i++;

    });

Но он вообще не работает.

Есть идеи?

1 Ответ

0 голосов
/ 25 октября 2018

Проблема в том, что $('table tr td') вернет все tds, поэтому, если у вас есть 2 строки по 4 tds, результат равен 8 tds, а 8 больше, чем ваш счет th.Вы должны пройти через каждый ряд.

//loop over each row
$('table tr').each(function() {
  //use the index of the td in the row for the array
  $(this).find('td').each(function(index){
    $(this).attr('data-title', array[index]);
  });
});


//or as an alternative
array.each(function(index, id){
  $('table tr td:nth-child('+ (index + 1) +')').attr('data-title', id);
});
...