我想给表中的每个元素一个生成的id。请参阅下面的html表:
<table>
<tbody>
<tr>
<td>A1</td>
<td>A2</td>
<td>
<a href="#">A3</a>
</td>
</tr>
<tr>
<td>B1</td>
<td>B2</td>
<td>
<a href="#">B3</a>
</td>
</tr>
<tr>
<td>C1</td>
<td>C2</td>
<td>C3</td>
</tr>
</tbody>
</table>
我想使用广度优先遍历给每个元素一个id。因此,结果如下所示:
<table>
<tbody id="0">
<tr id="1">
<td id="4">A1</td>
<td id="5">A2</td>
<td id="6">
<a href="#" id="13">A3</a>
</td>
</tr>
<tr id="2">
<td id="7">B1</td>
<td id="8">B2</td>
<td id="9">
<a href="#" id="14">B3</a>
</td>
</tr>
<tr id="3">
<td id="10">C1</td>
<td id="11">C2</td>
<td id="12">C3</td>
</tr>
</tbody>
</table>
我尝试过jQuery中的each()
函数为该表中的每个元素生成id,但each()
函数中使用的遍历算法是预排序遍历。
有没有人能推荐我用Javascript代码来做这件事?
发布于 2013-05-14 00:30:26
执行breadth-first search的一种常见方法是使用队列,如下所示:
jQuery(document).ready(function () {
var ctr = 0;
var queue = [];
queue.push(jQuery("table").children()); // enqueue
while (queue.length > 0) {
var children = queue.shift(); // dequeue
children.each(function (ix, elem) {
queue.push( // enqueue
jQuery(elem).attr("id", ctr++).children();
);
console.log(elem.tagName + ": " + elem.id);
});
}
});
https://stackoverflow.com/questions/16526641
复制相似问题