如何在元素中获取元素?

时间:2011-06-29 21:06:24

标签: jquery

我有一个看起来像这样的结构:

<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'

3 个答案:

答案 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();
})