我有一个搜索过滤器功能,但我 99% 确定问题不存在。
我首先调用搜索过滤器,然后运行 if 语句来确定是否应该隐藏该行。
想象一下,在执行搜索后我有以下可见的表行:
<tr>
<td class="time">content<td>
</tr>
<tr>
<td>result</td>
<tr>
</tr>
<td>result</td>
</tr>
<tr>
<td class="time">content<td>
</tr>
<tr>
<td class="time">content<td>
</tr>
<tr>
<td class="time">content<td>
</tr>
我的目标是隐藏所有具有时间类的 td 元素,前提是它们由包含具有相同时间类的 td 元素的行进行。因此 if 语句应该只在我上面的例子中隐藏最后三行,即:
<tr>
<td class="time">content<td>
</tr>
<tr>
<td>result</td>
<tr>
</tr>
<td>result</td>
</tr>
我尝试了以下方法无济于事:
$('td.time').parent().each(function() {
if($(this).siblings().first().children('td.time').length > 0) {
$(this).hide();
}
});
以上方法有效,但前提是我的搜索返回单个结果。如果在不同的时间行之后存在另一个结果,则错误地隐藏了该时间行。
以下是我目前拥有的,但它只是隐藏了所有时间行,即使理论上它是有意义的:
$('td.time').parent().each(function() {
if($(this).next(':visible').children('.time')) {
$(this).hide();
}
});
我唯一的解释是,使用 .next() 它只查看下一个 td.time 父级,而不是所有可见表行中的下一个。