jquery通过表索引访问用户特定的集合?

时间:2009-07-17 06:25:01

标签: jquery css-selectors html-table

我有一张桌子

<table>
<tr>
   <td class="myA">Data...1a</td>
   <td class="myA">Data...2a</td>
   <td class="myA">Data...3a</td>
</tr>
<tr>
   <td class="myB">Data...1b</td>
   <td class="myB">Data...2b</td>
   <td class="myB">Data...3b</td>
</tr>
<tr>
   <td class="myC">Data...1c</td>
   <td class="myC">Data...2c</td>
   <td class="myC">Data...3c</td>
</tr>
</table>

我们经常这样做:数据不是在一行和它们的列中分开 通常情况下,数据位于不同的行中但位于相同的td位置(因为连接的数据应该在它们之间写入)。

所以我想如果我有索引就可以在每个tr行上获得一个类过滤器和.get(theIndex)来从td个体中提取数据

但有一种简单的方法吗? - &GT;我想一步提取属于一起的数据 - &gt;然后可能是在一个数组/ jquery集中?

有什么想法吗? (我不能添加ids等 - 我只有td和classNames的索引)。

3 个答案:

答案 0 :(得分:1)

这可能是您正在寻找的:

<html>
    <head>
    </head>
    <body>
        <table>
            <tr>
                <td class="A">First Name 1</td>
                <td class="A">First Name 2</td>
                <td class="A">First Name 3</td>
            </tr>
            <tr>
                <td class="A">Last Name 1</td>
                <td class="B">Last Name 2</td>
                <td class="B">Last Name 3</td>
            </tr>
        </table>
        <script src="jquery-1.3.2.min.js"></script>
        <script>
        $(function() {
            var idx = 2;
            var data = [];
            $("tr td:nth-child(" + idx +")")
            .each(function() { 
                data[data.length] = $(this).text(); 
            });
            var person = { 
                firstName : data[0], 
                lastName : data[1] };

            alert (person.firstName + " " + person.lastName);
        });
        </script>
    </body>
</html>

上面的示例将为您提供多行中的名字2和姓氏2(td index = 2)

答案 1 :(得分:0)

要理解你想要实现的目标真的很难。如果您知道要访问的特定行,则可以始终执行此操作,

var rowIndex = 1;
$('table tr:eq(' + rowIndex + ') td').each( function() { /* cell for the row identified by rowIndex. */});

您还可以访问具有相同类名的所有tds。

$('td.myB').each( function() { } ); //Access all the cells having class 'myB'.

答案 2 :(得分:0)

我不确定这是否是你要找的,但是这个函数,给定一个特定的表元素引用和从零开始的索引,将返回该特定列中的单元格数组。如果这是有道理的,请告诉我。

function get_table_column(table, index) {
    cells = []
    $('tr', table).each(function() { 
        cells.push ($('td:eq(' + index + ')', this));
    });

    return cells;        
}