我有jQuery
来获取表格中的第5列文字并更改文本框的文本
$('textbox').val($(e.target).closest("tr").find('td:eq(4)').text());
然而,让我们说另一个开发人员移动列的索引(是的我可以评论说不要四处移动或使用正确的索引,但我想这是懒惰的方式)然后它会错误地选择错误的列的文本。那么我怎么能改变eq(index)
来改为使用静态列名呢?
谢谢
答案 0 :(得分:4)
给单元格一个类,然后按类选择:
$('textbox').val($(e.target).closest("tr").find('td.myClass').text());
或者使用您在评论中提到的属性:
$('textbox').val($(e.target).closest("tr").find('td[aria-describedby="yourValue"]').text());
答案 1 :(得分:1)
不依赖于任何特定实现(如jqGrid
)的替代方法是使用列名保持数组:
var columnNames = [];
$('table').find('th').each (function () {
columnNames.push($(this).text().trim());
});
然后,您可以使用O(1)操作获取列的索引:
var index = columnNames.indexOf("Inv No");
您可以在现有表达式中使用该索引:
$('textbox').val($(e.target).closest("tr").find('td:eq(' + index + ')').text());
这将使您可以灵活地切换到另一个表/网格插件而无需更改代码!
以下是应用于jqGrid呈现的HTML的示例:
答案 2 :(得分:-1)
this may help you
$('textbox').val($(e.target).closest("tr").children().eq(4).text());