我有一个看起来像这样的表:
<table>
<tr>
<td> ID1 </td>
<td> mr Dawson </td>
<td> 37 </td>
<td> New York </td>
</tr>
<tr>
<td> ID2 </td>
<td> mr Turner </td>
<td> 47 </td>
<td> Washington </td>
</tr>
<tr>
<td> ID3 </td>
<td> mr Craig </td>
<td> 26 </td>
<td> California </td>
</tr>
</table
我的问题是如何获取行信息,即每个列使用JQuery通过唯一ID发送文本?
我尝试了以下内容:
var $Row = $("table").closest('tr').children('td');
var ID = $Row.eq(0).text();
但我需要知道如何定位特定行而不是返回所有行。
为了更好地解释如果我在SQL中这样做我可能会使用这样的查询:
SELECT * FROM TableName WHERE ID = "VariableName"
输出应如下所示:
ID - mr Dawson - 37 - New York
但我想将每个列值存储为变量以供脚本中的其他地方使用
由于
答案 0 :(得分:1)
我的问题是如何获取行信息,即每列文本 通过使用JQuery的唯一ID?
您可以使用contains
按内容获取元素。
<强> Live Demo 强>
var toSearch = 'ID2';
$("table td:contains('"+toSearch+"')")
您可能需要find()而不是closest()
才能获得后代。最接近的将是你的祖先而不是后代。
var $Row = $("table").find('tr:eq(0)'); //here parameter passed to eq in index
var $cell = $Row.find('td:eq(0)'); //here parameter passed to eq in index
您可以将变量用于索引
row = 1
col = 1
var $Row = $("table").find('tr:eq('+row+')'); //here parameter passed to eq in index
var $cell = $Row.find('td:eq('+col+'0)'); //here parameter passed to eq in index
答案 1 :(得分:1)
您可以使用filter()
方法按单元格内容查找。例如:
var id = 'ID2';
var row = $('table tr').filter(function() {
return $(this).find('td:eq(0)').text() === id;
});
然后您可以使用此方法获取表格单元格数组:
var data = $('table tr').filter(function() {
return $(this).find('td:eq(0)').text() === id;
})
.find('td').map(function() {
return $(this).text();
}).get();
console.log(data);
答案 2 :(得分:1)
鉴于已发布的所需输出,以及缺少导致该输出的任何用户输入/操作,我建议(尽管未经测试):
var row1 = $('table tr').eq(0).find('td').map(function(){
return $(this).text();
}).get().join(' - ');
获取JavaScript对象中的所有行:
var allRows = {};
$('table tr').each(function(index){
allRows['row' + (index + 1)] = $(this).find('td').map(function(){
return $(this).text();
}).get().join(' - ');
});
参考文献: