jQuery:找到包含“Up”的td索引,然后使用该索引在下一个tr中选择相同的td?

时间:2014-02-07 01:10:09

标签: javascript jquery html-table

我有一个看起来像这样的表:

<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())');

我该如何解决这个问题?

3 个答案:

答案 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