jQuery获取没有display =“none”的元素

时间:2011-04-23 22:20:56

标签: jquery attributes coding-style

如何获取没有此样式属性的所有tbody > trdisplay: none

2 个答案:

答案 0 :(得分:18)

$("tbody > tr:visible")

应该使用:visible选择器。

答案 1 :(得分:17)

接受的答案是有效的,并且非常有用,但技术上并不是OP直接询问的内容。

我确实分裂了头发,但是我只需要在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>