в jQuery each в строку [дубликат]
Возможные Дубликаты:
Как выполнить итерацию строк таблицы с помощью JQuery и получить доступ к некоторым значениям ячеек?
у меня есть что-то вроде:
<table id="tblOne">
<tbody>
<tr>
<td>
<table id="tblTwo">
<tbody>
<tr>
<td>
Items
</td>
</tr>
<tr>
<td>
Prod
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
Item 1
</td>
</tr>
<tr>
<td>
Item 2
</td>
</tr>
</tbody>
</table>
Я написал jQuery для цикла через каждый tr, как:
$('#tblOne tr').each(function() {...code...});
но проблема в том, что он проходит через "tr" из "tblTwo", который я тоже не хочу. Может кто-нибудь, пожалуйста, предложить что-то, чтобы решить эту проблему?
3 ответа:
в jQuery, просто использовать
$('#tblOne > tbody > tr').each(function() {...code...});
С помощью селектора прямых детей (
>
) вы будете ходить по непосредственным потомкам (а не все потомкам)
на VanillaJS можно использовать
document.querySelectorAll()
и ходить по строкам с помощьюforEach()
[].forEach.call(document.querySelectorAll('#tblOne > tbody > tr'), function(tr) { /* console.log(tr); */ });
просто рекомендация:
Я бы рекомендовал использовать реализацию таблицы DOM, она очень проста и проста в использовании, вам действительно не нужен jQuery для этой задачи.
var table = document.getElementById('tblOne'); var rowLength = table.rows.length; for(var i=0; i<rowLength; i+=1){ var row = table.rows[i]; //your code goes here, looping over every row. //cells are accessed as easy var cellLength = row.cells.length; for(var y=0; y<cellLength; y+=1){ var cell = row.cells[y]; //do something with every cell here } }
использовать селектор непосредственных детей
>
:$('#tblOne > tbody > tr')
описание: выбирает все прямые дочерние элементы указано "ребенок" элементы, указанные "родителем".