我想知道使用JS / jQuery获取HTML表格的单个列(不包括标题)的单元格ID和文本的最有效方法,以便这两个数组可以传递到另一个函数
调用的函数是一个小部件,它接收ID和数据并对其进行操作。
我知道列标题,因此我可以使用它来选择正确的列。
我通过搜索看到,有很多不同的方法可以做到,但哪一种最有效?
非常感谢 理查德
答案 0 :(得分:0)
效率如何?
这样的东西在所需代码量方面会很有效:
var tablecells = {};
$('table td, table th').each(function (i, cell) {
tablecells[cell.id
|| Math.floor(10000 + Math.random()*1000000).toString(16)] =
{
isheader: /th$/i.test(cell.tagName),
text: cell.innerHTML
};
});
或tablecells
作为对象数组:
var tablecells = [];
$('table td, table th').each(function (i, cell) {
tablecells.push({ id: cell.id || Math.floor(10000 + Math.random()*1000000)
.toString(16),
isheader: /th$/i.test(cell.tagName),
text: cell.innerHTML } );
});
答案 1 :(得分:0)
我实际上刚刚完成了这个:)
我使用了下面的Jquery,它适用于我。
var results = [];
var Ids = [];
$(document).ready(function () {
$("#myTable tr:has(td)").not(':first').each(function () {
var cell = $(this).find("td:eq(0)").html();
results.push(cell)
});
$("#myTable td").not(':first').each(function () {
var samecell = $(this).attr('id');
Ids.push(samecell)
});
alert(results);
alert(Ids);
});
.not(':first')
将排除您的标头row
(至少在我的HTML中)
至于效率最高,我不知道 - 我是Jquery的新手。甚至不确定我是否正确理解了你的问题:)
Goodluck的朋友!
我创建了一个fiddle,因此您可以看到它的实际效果
答案 2 :(得分:0)
使用map jQuery扩展
var data = $.map($('table td, table th'),function(ele,i) {
return { id : $(ele).attr("id"), text:$(ele).text().trim() }
});
数据将包含单元格的所有ID及其相应的文本