JS / jQuery返回相关TD的TH,可能吗?

时间:2011-06-24 23:22:43

标签: javascript jquery jquery-selectors

我需要知道当没有使用jQuery选择器设置id或类时,是否有可能得到特定TH的.html()

说明我的问题:

TABLE
    THEAD TR
        TH1 TH2 TH3
    TBODY TR
        TD1 TD2 TD3

我设置了一个$('table tbody tr td')函数,可以在双击时将单元格转换为输入字段,然后返回模糊的文本,反映通过输入字段对单元格所做的更改。

我需要能够知道我正在访问哪个列。因此,如果有人双击TD2,我希望输入字段名称包含TH2。

如果没有为每个TH或TD设置id / class,请告诉我如何做到这一点。

3 个答案:

答案 0 :(得分:20)

如果处理程序在您的<td>元素上,那么在您的处理程序中:

var th = $(this).closest('table').find('th').eq( this.cellIndex );

表格单元格保留自己的索引号,可通过cellIndex属性访问。

表行通过rowIndex执行相同操作。

jQuery方法是:

进一步减少jQuery可能看起来像这样:

var th = $(this).closest('table')[0].rows[0].cells[ this.cellIndex ];

答案 1 :(得分:0)

这是怎么回事?

$('td').click(function(){
    cell = this.cellIndex;
    alert( $(this).closest('table').find('th:eq('+cell+')').text());
});

答案 2 :(得分:0)

Patrick的解决方案的jQuery替代方案可能是:

$("td").click(function()
{
    var $this = $(this);

    //Find the index of the column based on how many 
    //previous TDs there are.
    var col_idx = $this.prevAll("td").length;

    //Now select the Nth TH in the table using the base 1 column index.
    var $th = $("th:nth-child(" + (col_idx + 1) + ")", $this.closest("table"));

    /* your other code */
});