Выберите столбцы верхнего уровня из таблицы с вложенными таблицами, используя jquery - PullRequest
1 голос
/ 28 мая 2009

У меня есть следующая HTML-структура (которая создается, и я не могу изменить):

<table id='tableID'>
<tbody>
    <tr>
        <td>
            <table>...</table>
        </td>
        <td>
            <table>...</table>
        </td>
        <td>
            <table>...</table>
        </td>
    </tr>
    <tr>
        <td>
            <table>...</table>
        </td>
        <td>
            <table>...</table>
        </td>
        <td>
            <table>...</table>
        </td>
    </tr>
    ....
</tbody>
</table>

То, что я пытаюсь сделать, - это получить все внешние строки и для каждого столбца во внешней строке манипулировать содержимым. Итак, у меня есть что-то вроде:

var rows = $("#tableID > tbody > tr");
$.each(rows, function(n, row)
{
     var columns = row.children("td");
     if (columns.length > 0) {
          $.each(columns, function (i, column)
          {
               //do stuff
          });
     }
});

Проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю дочерний тдс, он слишком жадный и захватывает тдс из вложенных таблиц. Кто-нибудь знает, как я могу ограничить это так, чтобы я получил только tds из текущей строки внешней таблицы? Или есть лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 28 мая 2009
var rows = $("#tableID > tbody > tr");
rows.each(function(n, row)
{
     $(row).children().each( // td implicit, since tr should only contain td
        function (i, column) {
           //do stuff
           // Note, if you don't need a reference to row inside the function,
           // you can loop directly over the tds by adding > td to the first
           // selector and skip the outer loop.
        });
     }
});
3 голосов
/ 28 мая 2009

Возможно, вы зацикливаетесь дважды без необходимости. Если идея состоит в том, чтобы изменить каждую ячейку, которая не является частью вложенной таблицы, это должно сработать.

var cells = $("#tableID > tbody > tr > td");
$.each(cells, function(n, cell){     
   //do stuff          
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...