jquery-获取除第一行和最后一行之外的所有行
我想动态地将一个类添加到表的所有行中,第一行和最后一行除外。如果不给行分配css类来标识它们,我该如何做呢。除第一排外,我目前正在使用jquery-获取除第一行和最后一行之外的所有行,jquery,jquery-selectors,Jquery,Jquery Selectors,我想动态地将一个类添加到表的所有行中,第一行和最后一行除外。如果不给行分配css类来标识它们,我该如何做呢。除第一排外,我目前正在使用 $("#id").find("tr:gt(0)") 我需要将它与not(“tr:last”)结合起来,也许是某种原因?删除gt(),因为我假设它比:first稍微慢一点 将not()与:first和:last结合使用: $('table#tbl > tbody > tr').not(':first').not(':last').addClass('
$("#id").find("tr:gt(0)")
我需要将它与not(“tr:last”)
结合起来,也许是某种原因?删除gt()
,因为我假设它比:first
稍微慢一点
将not()
与:first
和:last
结合使用:
$('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');
大多数浏览器会自动在表标记中添加tbody
元素(如果缺少),这就是直接子项选择器失败的原因–没有
元素作为直接子项添加到
标记中
我不是百分之百确定所有浏览器都是这样做的,所以手动添加
会更安全。否则,您需要进行一点嗅探,而不能作为一个衬里:
if($('table#tbl > tbody').size() > 0) {
$('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');
} else {
$('table#tbl > tr').not(':first').not(':last').addClass('highlight');
}
希望这能解决你的问题 奇怪,贴出的建议不起作用,它们都应该起作用!但是 如果它不起作用,就这样做。。。。稍微慢一点,但必须工作!! 尝试: 试试这个:
.not(':first').not(':last')
为什么不仅仅是这个
$('table tr:not(:first-child):not(:last-child)');
也可用作纯CSS选择器。您还可以使用从集合中删除第一个/最后一个元素:
$('table tr').slice(1, -1);
基本上,创建一个新的jQuery对象,其中包含初始集合中指定的元素子集。在这种情况下,它将排除索引为1
和-1
的元素,这两个元素分别是第一个/最后一个元素
例子:
$('table tr').slice(1,-1).css('background-color','#f00')代码>
表格{宽度:100%;}
12
34
56
通过用逗号分隔选择器,可以将.not()
方法组合为一个:
$('#id tr').not(':first, :last');
$('#id tr:not(:first, :last');
注意,第二个在纯CSS中无效,仅作为jQuery选择器。对于纯CSS,您必须使用@Sumit的答案。这是有效的,除非最后一行中有一个表,情况就是这样。这是一个服务器控件,因此不容易更改。有什么想法吗?headerheader oneone two footer onefooter two footer threefooter footer footer footer footer footer footer footer footer footer当然,使用$('id>tr')
而不是$('id tr')
。这将强制选择器仅选择直接子级。这要求#id
元素是
。感谢您的回复。对于我在第一条注释中发布的html表,$('tbl>tr')。not(':first')。not(':last')。addClass(“highlight”)例如,code>似乎不起作用,$('table#tbl>tr')。不是(':first')。不是(':last')。addClass(“highlight”)代码>塔图-我将此标记为答案-感谢所有帮助。我对tbody一无所知——我想知道哪些浏览器可以做到这一点。必须处理一个不存在的标记似乎很疯狂:first现在已被弃用。为我工作!似乎比其他人提出的更容易使用。
$('#id tr').not(':first, :last');
$('#id tr:not(:first, :last');