в 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')
описание: выбирает все прямые дочерние элементы указано "ребенок" элементы, указанные в поле "родитель".