我有一个看起来像这样的表:
<table>
<tr><td>a</td><td>b</td><td>up</td><td>d</td></tr>
<tr><td>0</td><td>1</td><td>99</td><td>3</td></tr>
</table>
但它看起来也像这样:
<table>
<tr><td>up</td><td>b</td><td>c</td><td>d</td></tr>
<tr><td>99</td><td>1</td><td>2</td><td>3</td></tr>
</table>
如果我想在“up”文本下方的行中选择td怎么办? 此代码获取“up”索引:
$('table tr:eq(0) td:contains("up")').index();
这就是我想要的工作:
$('table tr:eq(1) td:eq($('table tr:eq(0) td:contains("up")').index())');
我该如何解决这个问题?
答案 0 :(得分:3)
您必须使用+
运算符进行字符串连接:
$('table tr:eq(1) td:eq(' + $('table tr:eq(0) td:contains("up")').index() + ')');
为了使代码更容易理解,我将其写成:
var upindex = $('table tr:eq(0) td:contains("up")').index();
$('table tr:eq(1) td:eq(' + upindex + ')').whatever();
答案 1 :(得分:1)
我建议:
var $tr = $('table tr'),
i = $tr.first().find('td:contains(up)').index();
var $cell = $tr.eq(1).find('td').eq(i);
您还可以使用children
属性并过滤目标元素:
var table = document.getElementById('table'),
tr = table.children[0].children;
td = tr[0].children,
l = td.length,
ind = null;
for (var i = 0; i < l; i++) {
if (td[i].innerHTML.indexOf('up') > -1) {
ind = i;
break;
}
}
var cell = tr[1].children[ind];
答案 2 :(得分:1)
var idx=$('td:contains("up")');
console.log(idx.closest('tr').next().find('td').eq(idx.index()).text())
<强> jsFiddle example 强>