Javascript 如何使用JQuery从表中选择最后一个单元格的前一个非空同级
我有一个包含以下行和单元格的表:Javascript 如何使用JQuery从表中选择最后一个单元格的前一个非空同级,javascript,jquery,html,html-table,siblings,Javascript,Jquery,Html,Html Table,Siblings,我有一个包含以下行和单元格的表: <table id='table1'> <tr id='row1'> <th>index</th> <th>Product</th> <th>Description</th> </tr> <tr id='row2' name='row'> <td name='index'>1</td
<table id='table1'>
<tr id='row1'>
<th>index</th>
<th>Product</th>
<th>Description</th>
</tr>
<tr id='row2' name='row'>
<td name='index'>1</td>
<td name='product'>Apples</td>
<td name='description'>fruits</td>
</tr>
<tr id='row3' name='row'>
<td name='index'>2</td>
<td name='product'>Bananas</td>
<td name='description'>fruits</td>
</tr>
<tr id='row4' name='row'>
<td name='index'>3</td>
<td name='product'>Carrots</td>
<td name='description'>vegetables</td>
</tr>
<tr id='row5' name='row'>
<td name='index'>4</td>
<td name='product'></td>
<td name='description'></td>
</tr>
</table>
而且
以前的方法
var lastrow=$('td[name=product]:not(:empty):last').prev().html()
但我无法获得last
tr
的索引号,因为它的产品标题中没有数据。换句话说,我无法在tr
中使用name=index
获取td
,而td
中使用name=product
没有任何数据。有人知道我做错了什么,或者我如何才能实现我所追求的吗 找到非空单元格并从中选择上一个单元格:
var lastCellBeforeCellWithNoData=$('td[name=product]:not(:empty):last').prev('name=index');
log(lastCellBeforeCellWithNoData.html())代码>
指数
产品
描述
1.
苹果
果实
2.
香蕉
果实
3.
胡萝卜
蔬菜
4.
如果要获取tr
索引,请使用此
var trIndex = $('td[name=product]:empty').parent().index();
否则,如果要选择name=“index”
则使用此选项
var nameIndex = $('td[name=product]:empty').prev();
var trIndex=$('td[name=product]:空').parent().index();
var nameIndex=$('td[name=product]:空').prev().text();
log('Tr Index->'+trIndex',name=“Index->'+nameIndex)代码>
指数
产品
描述
1.
苹果
果实
2.
香蕉
果实
3.
胡萝卜
蔬菜
4.
在花了一些时间理解您的问题之后,我认为您正在尝试完成以下任务:返回最后一个单元格的索引,其中“Product”列不是空的(注意,请尽量不要将其描述为NULL,因为它是db存储的一个非常特定的术语)。另外,我认为如果您可以使用其他语言(如PHP)来比较检索到的值是否为NULL(因为NULL不同于空格“”,那么最好看看前面的讨论)
然而,为了实现您想要实现的目标,我编写了一个简短的代码,如下所示
var tr = $('#table1 tr');
var index = 0;
for(i = tr.length - 1; i > 0; i--) {
if($(tr[i]).find('td:eq(1)').html() != "") {
index = i;
break;
}
}
console.log(index);
基本上,它会找到表的tr并逐行比较,以检查第二列td:eq(1)
,查看原始HTML值是否为空(抱歉,但我想再次强调,这不是一个很好的比较方法)并返回值
我没有根据性能优化代码,但我认为它应该足以实现您想要做的事情
希望这有帮助
关于。我不明白,你说你在寻找atr
的索引,但是你的选择器只在寻找td
s。一个td
的兄弟将是另一个td
。您要找的是td
还是tr
?如果你想要一个tr
它将是td
的父级,而不是兄弟级,请简化你的问题陈述。@chiliNUT她想要的是在产品单元格之前的索引单元格中的值,因为它也不起作用。除此之外,我首先在相应的tr
中查看td
,它在product=name
`td`中没有任何价值。再次编辑-我想在重新阅读问题后,我理解了您现在要查找的内容。:)
var tr = $('#table1 tr');
var index = 0;
for(i = tr.length - 1; i > 0; i--) {
if($(tr[i]).find('td:eq(1)').html() != "") {
index = i;
break;
}
}
console.log(index);