Почему селектор jQuery: visible включает скрытые TR в IE8? - PullRequest
1 голос
/ 21 сентября 2010

jQuery's : видимый селектор, похоже, не работает с элементами TR в Internet Explorer 8 в том смысле, что включает 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 Ответ

2 голосов
/ 21 сентября 2010

Это ошибка в jQuery 1.3.2.Для решения проблемы используйте jQuery 1.4.2.

Чтобы увидеть разницу, сравните эти два jsFiddles в IE 8:

jQuery 1.4.2- без проблем alt text

jQuery 1.3.2 - «3 строки видимы» alt text

AsПатрик DW указывает в комментариях , этот ответ указывает на конкретную ошибку .В той же теме есть ответ, который, по-видимому, подразумевает, что использование not:(:hidden) решит проблему в 1.3.2, но это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...