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, когда я прячу элемент.)