我有一个看起来像这样的结构:
<div class="project_group">
<table>
<tr style="display:none">
<td>...</td>
</tr>
<tr style="display:none">
<td>...</td>
</tr>
<tr>
<td>...</td>
</tr>
</table>
</div>
我在页面中有许多不同的project_group div
。现在,我想迭代这些div中的每一个并获得可见tr
的计数。如果计数为0,那么我想隐藏整个div。
$('div.project_group').each(function(index){
if ($(this)[index].filter('table tr:visible').length > 0)
{
$(this)[index].show();
}
else
{
$(this)[index].hide();
}
})
我得到的错误消息:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'filter'
答案 0 :(得分:5)
如果您没有嵌套表,请使用find()
[docs]方法。
$(this).toggle( $(this).find('tr:visible').length );
...我使用toggle()
[docs]方法根据是否找到任何匹配项来显示或隐藏。 0
表示hide
,大于0
表示show
。
答案 1 :(得分:3)
一个班轮怎么样:
$('div.project_group').not(':has(tr:visible)').hide();
答案 2 :(得分:2)
此处无需使用[index]
,并使用.find
代替.filter
:
$('div.project_group').each(function(index){
if ($(this).find('table tr:visible').length > 0)
$(this).show();
else
$(this).hide();
})