首页 > 解决方案 > Jquery - 仅在 .stable 类的表中,隐藏第二个 td 没有 innerHTML 的所有行

问题描述

我有一个包含许多表格的 HTML 文档。

我只想从具有.stable类的表中隐藏行

该行的第二个 td 没有 innerHTML。

表格的示例 html

 $("tr").not(":has(td:nth-child(2):not(:empty))").hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="stable">
    	<tr class="spec_tit"><th colspan="2">Resident Evil 7</th></tr>
    	<tr class="spec_cpu"><td class="tdr">CPU</td><td class="tdl">Intel Core i5 4460 @2.70GHz / AMD FX 6300</td></tr>
    	<tr class="spec_ram"><td class="tdr">RAM</td><td class="tdl">8GB</td></tr>
    	<tr class="spec_gra"><td class="tdr">Graphics</td><td class="tdl"><strong>2GB</strong>, nVidia GeForce GTX 760 / AMD Radeon R7 260x</td></tr>
    	<tr class="spec_sha"><td class="tdr">Shader Model</td><td class="tdl"></td></tr>
    	<tr class="spec_dis"><td class="tdr">Disk space</td><td class="tdl">24GB</td></tr>
    	<tr class="spec_aud"><td class="tdr">Audio</td><td class="tdl">DX 9.0c</td></tr>
    	<tr class="spec_per"><td class="tdr">Peripherals</td><td class="tdl"></td></tr>
    	<tr class="spec_os"><td class="tdr">OS</td><td class="tdl">Win7 x64, Win8 x64, Win8.1 x64, Win10 x64</td></tr>
    	<tr class="spec_dx"><td class="tdr">DX ver</td><td class="tdl">11</td></tr>
    </table>

但:

  1. 它在所有表上运行,而不管类

  2. 它包括具有单个 th(并且没有 td)的行,例如上面示例的第一行

在示例中,正确的 jquery 将仅隐藏第 5、7 和 8 行

标签: javascriptjqueryhtml

解决方案


为了选择所有具有2" td 空的稳定类的表,选择器是:

$('table.stable td:nth-child(2):empty')

为了隐藏整行代码是:

$('table.stable td:nth-child(2):empty').closest('tr').hide()

有关更多详细信息,请参阅:nth-child():empty.closest()

$('table.stable td:nth-child(2):empty').closest('tr').hide()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table class="stable">
    <tr class="spec_tit">
        <th colspan="2">Resident Evil 7</th>
    </tr>
    <tr class="spec_cpu">
        <td class="tdr">CPU</td>
        <td class="tdl">Intel Core i5 4460 @2.70GHz / AMD FX 6300</td>
    </tr>
    <tr class="spec_ram">
        <td class="tdr">RAM</td>
        <td class="tdl">8GB</td>
    </tr>
    <tr class="spec_gra">
        <td class="tdr">Graphics</td>
        <td class="tdl"><strong>2GB</strong>, nVidia GeForce GTX 760 / AMD Radeon R7 260x</td>
    </tr>
    <tr class="spec_sha">
        <td class="tdr">Shader Model</td>
        <td class="tdl"></td>
    </tr>
    <tr class="spec_dis">
        <td class="tdr">Disk space</td>
        <td class="tdl">24GB</td>
    </tr>
    <tr class="spec_aud">
        <td class="tdr">Audio</td>
        <td class="tdl">DX 9.0c</td>
    </tr>
    <tr class="spec_per">
        <td class="tdr">Peripherals</td>
        <td class="tdl"></td>
    </tr>
    <tr class="spec_os">
        <td class="tdr">OS</td>
        <td class="tdl">Win7 x64, Win8 x64, Win8.1 x64, Win10 x64</td>
    </tr>
    <tr class="spec_dx">
        <td class="tdr">DX ver</td>
        <td class="tdl">11</td>
    </tr>
</table>


推荐阅读