Принятый ответ работает и очень полезен, но не технически, о чем прямо спросил ОП.
Я, правда, расщепляю волосы, но мне нужно было найти только элементы tr
, которые буквально не содержали display: none
в их атрибуте style
, потому что родительский элемент мог бы быть скрытым, таким образом, не возвращая никаких элементов.
Итак, я написал следующее:
var $trWithoutDisplayNone = $('tbody > tr:not([style*="display: none"])');
Обновление:
Исходный код выберет массив всех tr
с на странице без атрибута стиля, содержащий "display: none"
.
Более эффективным и конкретным способом было бы нацеливание на сам стол.
HTML:
<table id="tableID">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr style="background: grey; display: none;">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
JavaScript / JQuery:
<script>
function getDisplayedRows($targetTable) {
return $targetTable.find('tr:not([style*="display: none"])');
}
var $table = $("#tableID"),
$visibleRows = getDisplayedRows($table);
</script>