为列构建表格单元格ID数组

时间:2014-08-22 08:07:09

标签: javascript jquery

我想知道使用JS / jQuery获取HTML表格的单个列(不包括标题)的单元格ID和文本的最有效方法,以便这两个数组可以传递到另一个函数

调用的函数是一个小部件,它接收ID和数据并对其进行操作。

我知道列标题,因此我可以使用它来选择正确的列。

我通过搜索看到,有很多不同的方法可以做到,但哪一种最有效?

非常感谢 理查德

3 个答案:

答案 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及其相应的文本