我需要知道当没有使用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,请告诉我如何做到这一点。
答案 0 :(得分:20)
如果处理程序在您的<td>
元素上,那么在您的处理程序中:
var th = $(this).closest('table').find('th').eq( this.cellIndex );
表格单元格保留自己的索引号,可通过cellIndex
属性访问。
表行通过rowIndex
执行相同操作。
jQuery方法是:
获取<table>
closest()
[docs]方法
查找嵌套<th>
元素的find()
[docs]方法
eq()
[docs]方法将<th>
元素缩减为与<td>
进一步减少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 */
});