jQuery选择器用于选取直接的子孙元素。

3
有没有更好的方法使用选择器来编写以下遍历方式?
$table.children('tbody').children('tr');

我想要筛选出直接的子元素,而不包括进一步的后代元素(表格内部的表格)。
在 jQuery 的文档中,$table.find('> tbody > tr') 被标记为已弃用。
更新:我正在寻找一种比上述方法更快或等效的选择器。
2个回答

2
作为一个替代选择器,我建议只使用以下内容。此外,我怀疑是否有比简单的DOM el.childNodes 迭代更快的方法,这种方法通过children() 方法表示。
$table.find("tr:not(tr tr)")​​​​​​​​;

DEMO: http://jsfiddle.net/mZppb/


这个代码会比 children().children() 更快还是至少等价吗?有些东西告诉我这个代码会更慢,因为它会在过滤掉不需要的子元素之前先找到所有的元素。 - Joyce Babu
@JoyceBabu 不,它不会更快。 - VisioN

1

如果需要立即使用:

$('table > tbody > tr');

1
这就是 OP 正在使用的。此外,他提到它现在已经被弃用了。不知道为什么他们会废弃一个实际的 CSS 选择器,但看起来是真的:http://api.jquery.com/child-selector/ - Joseph Marikle
1
只有在没有初始元素的上下文(即使用 find 时,例如 > tbody > tr)中使用时才被弃用。虽然对于 OP 来说可能没有什么用处,但这是可以接受的。 - lonesomeday
@Rick_Donohoe我不能使用那个,因为还有一个上下文变量 $table - Joyce Babu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接