Javascript Jquery eq()使用列名而不是索引

Javascript Jquery eq()使用列名而不是索引,javascript,jquery,Javascript,Jquery,我使用这个jQuery来获取表中的第5列文本并更改文本框的文本 $('textbox').val($(e.target).closest("tr").find('td:eq(4)').text()); 但是,让我们假设另一个开发人员移动了列的索引是的,我可以评论说不要移动或使用正确的索引,但我想这是一种懒惰的方式,它会错误地选择错误列的文本。那么,如何将eqindex更改为使用静态列名呢 谢谢为单元格设置一个类,然后按类选择: $('textbox').val($(e.target).clos

我使用这个jQuery来获取表中的第5列文本并更改文本框的文本

$('textbox').val($(e.target).closest("tr").find('td:eq(4)').text());
但是,让我们假设另一个开发人员移动了列的索引是的,我可以评论说不要移动或使用正确的索引,但我想这是一种懒惰的方式,它会错误地选择错误列的文本。那么,如何将eqindex更改为使用静态列名呢


谢谢

为单元格设置一个类,然后按类选择:

$('textbox').val($(e.target).closest("tr").find('td.myClass').text());
或者使用您在评论中提到的属性:

$('textbox').val($(e.target).closest("tr").find('td[aria-describedby="yourValue"]').text());

另一种不依赖于任何特定实现(如jqGrid)的方法是保留一个列名如下的数组:

var columnNames = [];

$('table').find('th').each (function () {
   columnNames.push($(this).text().trim());
});
然后可以使用O1操作获取列的索引:

var index = columnNames.indexOf("Inv No");
您可以在现有表达式中使用该索引:

$('textbox').val($(e.target).closest("tr").find('td:eq(' + index + ')').text());
这将使您能够灵活地切换到另一个表/网格插件,而无需更改代码

下面是一个应用于jqGrid呈现的HTML的示例:


这看起来不错,但是,我可以使用另一个属性来代替类吗?例如,aria。这是一个jqGrid,它可以填充me@user3428422检查我的更新,我已经添加了一个使用aria DescribedBy的版本。这太棒了,谢谢,我会接受的me@user3428422没问题,很高兴我能提供帮助:问题是,我如何才能将eqindex改为使用静态列名呢?这只是作者提供的同一查询的另一种语法
$('textbox').val($(e.target).closest("tr").find('td:eq(' + index + ')').text());