Jquery 当所有子级都具有相同的类时隐藏父级tr

Jquery 当所有子级都具有相同的类时隐藏父级tr,jquery,html-table,hide,Jquery,Html Table,Hide,我正在列出一项体育赛事的结果。每个事件在一个表中都有自己的行,有些行有多个结果,列为li项。人们需要能够过滤结果,因此通过使用复选框,他们可以从列表中删除结果。为此,我添加了类。转到这些结果,结果显示:无。但是,如果它们对结果进行了足够的过滤,则某些事件将不再具有任何可见的结果。如果出现这种情况,我希望表中的完整行显示为:无 基本上,如果tr中的所有li都有类.gone,那么父tr也应该被分配类.gone 我在这方面有点不在行,我在这个网站上尝试了很多不同的例子,但我显然遗漏了一些东西 以下是H

我正在列出一项体育赛事的结果。每个事件在一个表中都有自己的行,有些行有多个结果,列为li项。人们需要能够过滤结果,因此通过使用复选框,他们可以从列表中删除结果。为此,我添加了类。转到这些结果,结果显示:无。但是,如果它们对结果进行了足够的过滤,则某些事件将不再具有任何可见的结果。如果出现这种情况,我希望表中的完整行显示为:无

基本上,如果tr中的所有li都有类.gone,那么父tr也应该被分配类.gone

我在这方面有点不在行,我在这个网站上尝试了很多不同的例子,但我显然遗漏了一些东西

以下是HTML:

<table width="100%" border="0" cellpadding="5" cellspacing="0">
<tr>
    <td valign="top" width="75px"><div id="tableHeader">Date</div></td>
    <td valign="top"><div id="tableHeader">Event</div></td>
    <td valign="top"><div id="tableHeader">Location</div></td>
</tr>

<tr id="section">

    <td valign="top">
        <div id="postmeta">3/2/2013</div>
    </td>

    <td valign="top">
        <div class="posttitle" id="post-103">AT&#038;T American Cup</div>
            <ul>
            <li class="Men"><a href="http://usagym.org/PDFs/Results/m_13ac_final.pdf" target="_new">Men's All-Around</a></li>
            <li class="Women"><a href="http://usagym.org/PDFs/Results/w_13ac_final.pdf" target="_new">Women's All-Around</a></li>
            </ul>
    </td>

    <td valign="top">Worcester, Mass.</td>

</tr>


<tr id="section">

    <td valign="top">
        <div id="postmeta">3/1/2013</div>
    </td>

    <td valign="top">
        <div class="posttitle" id="post-106">Nastia Liukin Cup</div>
            <ul>
            <li class="Women"><a href="http://usagym.org/PDFs/Results/w_13nlc_final.pdf" target="_new">Final Results</a></li>
            </ul>
    </td>

    <td valign="top">Worcester, Mass.</td>

</tr>
我也为这个代码道歉。这是我在这里的第一篇文章,我已经试着对代码的格式进行了修改

非常感谢您的帮助。这是我正在处理的页面。。。如果有帮助的话:


更新:正如一位回复者指出的,我可以检查事件的li是否被隐藏,如果是,则隐藏事件标题。然而,我最初想隐藏ul,直到有人点击事件标题。我在页面上没有该代码,但我现在有了。

我认为您比较集合长度的想法是正确的

循环遍历每个
tr
,并分别应用比较:

$('tr').each(function() {
    var $this = $(this);
    var $lis = $this.find('li');

    if ($lis.length === 0) return;

    if ($lis.filter('.gone').length === $lis.length) {
        $this.addClass('gone');
    } else {
        $this.removeClass('gone');
    }
});

我还使循环跳过检查,如果它没有任何
li
子项,因为它也将循环通过标题行。

尝试过它。。。没有什么。我只是将链接添加到我正在处理的页面,以便人们可以看到我正在处理的内容。您的页面不会将
gone
类添加到
li
中。当我签入firebug时,它会这样做。取消勾选顶部的任何复选框会将“gone”添加到该特定类中。例如,当取消选中women复选框时,任何包含women类的div都会被添加到该div中。这就是它消失的原因。啊,我在用组复选框进行测试。我看到它对男人和女人都适用。当我在不勾选男男女女后运行代码时,它就起作用了。您是否在每次更改复选框以及添加类后都执行此代码?嗯。。。遗憾的是,我不知道该怎么做。
$('tr').each(function() {
    var $this = $(this);
    var $lis = $this.find('li');

    if ($lis.length === 0) return;

    if ($lis.filter('.gone').length === $lis.length) {
        $this.addClass('gone');
    } else {
        $this.removeClass('gone');
    }
});