如何使用jQuery获取表格单元格值

时间:2011-04-10 13:44:19

标签: jquery html-table cell

我正在尝试使用jQuery为我无法控制的表获取td值。在这个网站上发布了一个很好的例子,但它引用了每个tr中的一列而不是多列。

我也没有表格或行的ID ... td只有class=columndata

$('#mytable tr').each(function() {
    var customerId = $(this).find("td").eq(2).html();    
}

将获得固定tr的单个td?

这是我的表数据:

<tr valign="top">
    <td class="columnaction" valign="center">
        <img src="../images/spacer.gif" width="1" height="1" />
        <a href="javascript:void(0);" class="columnactionlink" onclick="return doAccept('599577', '1', '','');" alt="Accept">Accept</a>
    </td>
    <td class="columndata">Message</td>
    <td class="columndata">Test</td>
    <td class="columndata"></td>
    <td class="columndata"></td>
    <td class="columndata">04/09/2011 23:59</td>
    <td class="columndata">04/09/2011</td>
    <td class="columndata">05/12/2011 07:00</td>
    <td class="columndata">05/13/2011 07:00</td>
    <td class="columndata"></td>
    <td class="columndata">Doe, Jeffrey A. (xx)</td>
    <td class="columndata">913014405580</td>
    <td class="columndata">Skip</td>
    <td class="columndata">04/09/2011 16:37</td>
    <td class="columndata">C</td>
    <td class="columndata">Doe,J</td>
    <td class="columndata">04/09/2011 16:37</td>
    <td class="columndata">04/09/2011 23:59</td>
    <td class="columndata">04/09/2011 16:34</td>
</tr>

以下是对类似问题的引用: How to get a table cell value using jQuery?

4 个答案:

答案 0 :(得分:5)

这是你需要的选择器:

$('#mytable tbody tr td:nth-child(2)')

答案 1 :(得分:3)

正如@danip在他的陈述中指出的那样,你可以通过直接访问TD 一个有效的CSS选择器

$('#mytable tbody tr td:nth-child(2)')

稍微描述一下他在这里做了什么

  1. 他通过使用#mytable
  2. 进行寻址来选择id = mytable的表格
  3. 然后他下到桌子上
  4. 他选择了这张桌子的所有内容,但进一步定义了
  5. 选择每个tr下的所有tds
  6. 最后他从所有这些tds中选择了表中每个tr的第二个!
  7. 你可以像这里一样迭代返回的dom元素,并通过html()或()text

    获取HTML或Textcontent
    $('#mytable tbody tr td:nth-child(2)').each(function() {
       output += $(this).text();
    });
    

    看到这个jsfiddle自己尝试一下

    http://jsfiddle.net/SdBBy/

    此致

答案 2 :(得分:3)

在这里的背景下,但可能会帮助你: 如果你有超过100行,上面的代码会慢一点,1000行和性能会慢得多,在这种情况下你可以使用:

$('td:nth-child(2)', '#mytable') //$(selector, context)

和一个for循环,你应该首先缓存这个对象,如

var items = $('td:nth-child(2)', '#mytable');
for(var i=0;i<items.length;i++)
{
    //your code
}

此致 SJ

答案 3 :(得分:1)

使用.text()代替.html()