所以我尝试了这个:
input.find(" tr").each(function(){ ... });
我也试过这个:
input.find(" > tr").each(function(){ ... });
这两个都不起作用。第一个将选择任何TR,即使它在嵌套表下。如果表有tbody或类似的东西,第二个将无法工作。有什么帮助吗?
输入定义为:
var input = $(".mySelectionScope");
DOM看起来像这样:
<div class='mySelectionScope'>
<div> // Optional
<table>
<tbody>
<tr> // Select this one
<table>
<tr> // Don't select this one
....
答案 0 :(得分:0)
您可以使用.not()
过滤tr下的trinput.find("tr").not("tr tr")
答案 1 :(得分:0)
您可以过滤它:
input.find("tr").filter(function(){return !$(this).closest('tr').length}).each(...);
答案 2 :(得分:0)
如何在t列表中调用first()?
答案 3 :(得分:0)
使用jQuery children()而不是find()
来自文档:
.children()方法与.find()的区别仅在于.children() 在.sind()可以遍历时沿DOM树向下移动一个级别 在多个级别选择后代元素(孙子, 等)。
可选的div也会产生一些棘手的问题......
var input = $('.mySelectionScope').children('div').length == 0 ?
$('.mySelectionScope') :
$('.mySelectionScope > div'),
rows = input.children('table').children('tbody').length == 0 ?
input.children('table').children('tr') :
input.children('table').children('tbody').children('tr');
如果总是在所有浏览器中插入tbody,则不需要第二个if语句,您可以改为使用
rows = input.children('table').children('tbody').children('tr');
非常丑陋,但你不能单独使用选择器。
答案 4 :(得分:0)
使用此解决方案,您之间是否有tbody标记无关紧要:
$('table').find('tr:first').parent().children()