Javascript 如何使用jQuery隐藏表中具有特定类的最后一个表行
我有一个页面,其中包含一系列具有以下结构的表Javascript 如何使用jQuery隐藏表中具有特定类的最后一个表行,javascript,jquery,jquery-selectors,hide,Javascript,Jquery,Jquery Selectors,Hide,我有一个页面,其中包含一系列具有以下结构的表 <table> <thead> <tr> <th>2</th> <th>Position</th> <th>Names</th> </tr> </thead> <tbody> <tr class="station-12 odd"><td>1
<table>
<thead>
<tr>
<th>2</th>
<th>Position</th>
<th>Names</th>
</tr>
</thead>
<tbody>
<tr class="station-12 odd"><td>12</td><td>AO</td><td id="2-1-12-am">Name goes here</td> </tr>
<tr class="station-12 even"><td></td><td>FF</td><td id="2-2-12-am">Name goes here</td> </tr>
<tr class="station-12 odd"><td></td><td>PFF</td><td id="2-3-12-am">Name goes here</td> </tr>
<tr class="separator even"><td colspan="3"></td> </tr>
<tr class="station-13 odd"><td>13</td><td>AO</td><td id="2-1-13-am">Name goes here</td> </tr>
<tr class="station-13 even"><td></td><td>FF</td><td id="2-2-13-am">Name goes here</td> </tr>
<tr class="station-13 odd"><td></td><td>PFF</td><td id="2-3-13-am">Name goes here</td> </tr>
<tr class="separator even"><td colspan="3"></td> </tr>
<tr class="station-18 odd"><td>18</td><td>AO</td><td id="2-1-18-am">Name goes here</td> </tr>
<tr class="station-18 even"><td></td><td>FF</td><td id="2-2-18-am">Name goes here</td> </tr>
<tr class="station-18 odd"><td></td><td>PFF</td><td id="2-3-18-am">Name goes here</td> </tr>
<tr class="separator even"><td colspan="3"></td> </tr>
<tr class="station-19 odd"><td>19</td><td>AO</td><td id="2-1-19-am">Name goes here</td> </tr>
<tr class="station-19 even"><td></td><td>FF</td><td id="2-2-19-am">Name goes here</td> </tr>
<tr class="station-19 odd"><td></td><td>PFF</td><td id="2-3-19-am">Name goes here</td> </tr>
</tbody>
</table>
隐藏的部分就像一个符咒。我遇到的问题是试图同时隐藏最后一个station-x行后面的最后一个分隔行。例如,如果我隐藏所有station-18
和station-19
行,我还想隐藏紧跟station-13
行之后的.separator行。正如您在我的代码中所看到的,我的想法是遍历父元素(在本例中为
),找到所有
元素并隐藏它们,但它不起作用。如果我在该行放置断点并在控制台中输入$(station\u class).hide().parent()
,我只会得到一个空数组,因此显然我没有错误地使用.parent()。我也尝试过.nexist()
,但运气不好
我是接近了,还是有更好/更容易的方法来做我想做的事情
谢谢。重新检查代码后,我注意到您的语法有问题。具体来说,这条线
$(station_class).hide().parent().find('.separator').last().hide();
应改为
$(station_class).parent().find('.separator').last().hide();
您调用了两次
hide()
方法。重新检查代码后,我注意到您的语法有问题。具体来说,这条线
$(station_class).hide().parent().find('.separator').last().hide();
应改为
$(station_class).parent().find('.separator').last().hide();
您调用了两次hide()
方法。尝试使用兄弟姐妹()
更新:
您也可以尝试使用单独的行代码
var sep = $(station_class).hide();
sep.siblings('.separator').last().hide();
尝试使用兄弟姐妹()
更新:
您也可以尝试使用单独的行代码
var sep = $(station_class).hide();
sep.siblings('.separator').last().hide();
我会这样做:
在每个站点(第一个站点除外)生成
<tr class="separator station-nn"><td colspan="3"></td> </tr>
式中,nn=下一站的站#
然后,您只需在关闭工作站时关闭分隔行
换言之,每个站点前面都有一个与该站点关联的分隔符。当然除了第一站 我会这样做:
在每个站点(第一个站点除外)生成
<tr class="separator station-nn"><td colspan="3"></td> </tr>
式中,nn=下一站的站#
然后,您只需在关闭工作站时关闭分隔行
换言之,每个站点前面都有一个与该站点关联的分隔符。当然除了第一站 尝试使用next()它可能看起来非常简单和动态
$('.station-18').hide().next('.separator').hide()
试试下面的演示
$(文档).ready(函数(){
setTimeout(函数(){
$('.station-12').hide().next('.separator').hide();
}, 1000);
setTimeout(函数(){
$('.station-13').hide().next('.separator').hide();
}, 2000);
setTimeout(函数(){
$('.station-18').hide().next('.separator').hide();
}, 3000);
});代码>
2.
位置
名字
12
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
13
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
18
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
19
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
尝试使用next()它可能看起来非常简单和动态
$('.station-18').hide().next('.separator').hide()
试试下面的演示
$(文档).ready(函数(){
setTimeout(函数(){
$('.station-12').hide().next('.separator').hide();
}, 1000);
setTimeout(函数(){
$('.station-13').hide().next('.separator').hide();
}, 2000);
setTimeout(函数(){
$('.station-18').hide().next('.separator').hide();
}, 3000);
});代码>
2.
位置
名字
12
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
13
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
18
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
19
敖
名字就在这里
FF
名字就在这里
PFF
名字就在这里
这是链接的错误使用。您正在调用hide()
两次。我的答案是关于这一点的,这是有道理的,因为hide()不是选择器(正如您在上面指出的)。看起来我需要两条分开的链条;一个用来隐藏行,另一个用来隐藏最后一个.separator行。@RichardHamilton我真的不知道,在什么方面它是不正确的链。你能给我解释一下这个场景吗?因此,我可以更新我的答案。同级
是一种遍历方法,可在选择器上调用<代码>$(选择器).hide()
不是选择器。只需删除第一个隐藏
,您的代码就可以工作了。我刚刚从W3S中找到了文档。这是报价单<代码>jQuery遍历,意思是“移动”,用于根据HTML元素与其他元素的关系“查找”(或选择)HTML元素。从一个选择开始,然后在该选择中移动,直到到达所需的元素。
这是链接的错误用法。您正在调用hide()
两次。我的答案是关于这一点的,这是有道理的,因为hide()不是选择器(正如您在上面指出的)。看起来我需要两个分开的cha