代码之家  ›  专栏  ›  技术社区  ›  Vebjorn Ljosa

为什么jQuery的:可见选择器在IE8上包含隐藏tr?

  •  1
  • Vebjorn Ljosa  · 技术社区  · 14 年前

    jQuery的 :visible 选择器似乎不适用于InternetExplorer8中的TR元素,因为它包含使用 hide() . 下面是一个测试用例:

    <html>
      <head>
        <script language="JavaScript" src="jquery-1.3.2.min.js"></script>
        <script language="JavaScript">
    $(document).ready(function () { 
                   $('#trb').hide();
                   $('#trcount').html($('tr:visible').length);
                   $('#pb').hide();
                   $('#pcount').html($('p.item:visible').length);
    });
        </script>
      </head>
      <body>
        <table>
          <tr><td>A</td></tr>
          <tr id="trb"><td>B</td></tr>
          <tr><td>C</td></tr>
        </table>
        <p><span id="trcount">?</span> rows are visible.</p>
    
        <p>Using paragraphs:</p>
        <p class="item">A</p>
        <p class="item" id="pb">B</p>
        <p class="item">C</p>
    
        <p><span id="pcount">?</span> paragraphs are visible.</p>
      </body>
    </html>
    

    在Chrome上,它的结果是2行可见,2段可见,正如预期的那样。但是,在Internet Explorer 8上,结果是3行可见,2段可见。

    为什么?最好的解决方法是什么?(我能想到的最好办法是在隐藏项目时添加CSS类。)

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community Michael Schmitz    7 年前

    这是jquery1.3.2的一个bug。要解决这个问题,请使用jquery1.4.2。

    在IE中 8:

    jQuery 1.4.2 - no problems alt text

    jQuery 1.3.2 - "3 rows visible" alt text

    this answer points out the specific bug . 在同一条线索中有一个答案似乎暗示 not:(:hidden)