当试图从包含一些信息的所有[tr]中获取第二个[td]时,我一直陷入逻辑困境。这是一些例子。
<table class="todos">
<tbody>
<tr>
<td>info1</td>
<td>info2</td>
<td>info3</td>
</tr>
</tbody>
</table>
以下是为我找到它的Javascript ...
$(".todos tbody tr").css('display','none');
$(".todos tbody tr").each(function(){
if($(this).find("td:eq(0):contains("+procurar+")"))
$(this).css('display','table-row');
if($(this).find("td:eq(1):contains("+procurar+")"))
$(this).css('display','table-row');
});
答案 0 :(得分:0)
您正在隐藏父tr
,因此在td
上设置另一个显示属性将不会显示它们,但如果这不是预期的功能,我会这样做:
$(".todos tbody tr").hide().find('td:lt(2)').filter(function() {
return $(this).text().indexOf(procurar) != -1;
}).closest('tr').css('display','table-row');
答案 1 :(得分:0)
您似乎在第一个if
条件中出现语法错误,并且:contains
附近有一些错误代码
这个可能对你有用
var procurar = 'info2';
$(".todos tr").css('display', 'none');
$(".todos tbody tr").each(function () {
if($(this).find('td:lt(2):contains("' + procurar + '")').length){
$(this).css('display', 'table-row');
}
});
答案 2 :(得分:0)
由于我看不到你的所有代码(例如:我不知道procurar
等于什么),我设置了一些带有一些硬编码值的样本:
的JavaScript
$(".todos tbody tr").each(function() {
var $targetTDs = $(this).find("td:contains('info1')");
if ($targetTDs.length > 1) {
var $theSecondInstanceOfATDContainingInfo1 = $targetTDs[1];
}
});
HTML
<table class="todos">
<tbody>
<tr>
<td>info1</td>
<td>info1</td> // $theSecondInstanceOfATDContainingInfo1 is this one
<td>info2</td>
</tr>
<tr>
<td>info1</td>
<td>info2</td>
<td>info1</td> // $theSecondInstanceOfATDContainingInfo1 is this one
</tr>
<tr>
<td>info2</td>
<td>info1</td>
<td>info1</td> // $theSecondInstanceOfATDContainingInfo1 is this one
</tr>
</tbody>
</table>
对于包含两个值为info1
的TD的每一行,$theSecondInstanceOfATDContainingInfo1
将捕获第二个TD。
从您的原始代码中,我无法确定您是否确实需要匹配的TD,或者您只是需要知道它存在,但您可以调整此代码来处理这两种情况。
答案 3 :(得分:0)
如果你想获得至少有2 [td]个包含你应该使用的信息的[tr]:包含之前:lt。
HTML
<table class="todos">
<tbody>
<tr>
<td>info1</td>
<td>info2</td>
<td>info3</td>
</tr>
<tr>
<td>info1</td>
<td>other</td>
<td>info3</td>
</tr>
<tr>
<td>info1</td>
<td>other</td>
<td>some other</td>
</tr>
</tbody>
</table>
JS:
var procurar = 'info';
$(".todos tr").css('display', 'none');
$(".todos tbody tr").each(function () {
if ($(this).find('td:contains("' + procurar + '"):lt(2)').length > 1) {
$(this).css('display', 'table-row');
}
});
结果:
info1 info2 info3
info1 other info3
其他,如果你想得到第二[td]包含你应该使用的一些信息的[tr]:在你的例子中,在之前:包含。
HTML
<table class="todos">
<tbody>
<tr>
<td>info1</td>
<td>info2</td>
<td>other</td>
</tr>
<tr>
<td>info1</td>
<td>other</td>
<td>info2</td>
</tr>
</tbody>
JS:
var procurar = 'info';
$(".todos tr").css('display', 'none');
$(".todos tbody tr").each(function () {
if ($(this).find('td:lt(2):contains("' + procurar + '")').length > 1) {
$(this).css('display', 'table-row');
}
});
结果:
info1 info2 other