1

我有以下内容:

    <div id="btnL">Left</div>
    <div id="btnR">Right</div>

    <table id="tab1">
            <thead>
                    <tr>
                            <td>Item</td>
                            <td>Price</td>
                            <td>Descript</td>
                    </tr>
            </thead>
            <tbody>
                    <tr>
                            <td>Entry</td>
                            <td>Entry</td>
                            <td>Entry</td>
                    </tr>
                    <tr>
                            <td>Entry</td>
                            <td>Entry</td>
                            <td>Entry</td>
                    </tr>
                    .
                    .
                    .
                    <tr>
                            <td>Entry</td>
                            <td>Entry</td>
                            <td>Entry</td>
                    </tr>

            </tbody>
    </table>

    <script>
            $("#btnR").click(function(e) {
                    $("#tab1 thead tr td:nth-child(n+2).css("display","table-cell");
                    $("#tab1 thead tr td:nth-child(-n+1).css("display","none");
            });
            $("#btnL").click(function(e) {
                    $("#tab1 thead tr td:nth-child(n+2).css("display","none");
                    $("#tab1 thead tr td:nth-child(-n+1).css("display","table-cell");
            });
    </script>

代码按预期工作,隐藏和显示最后一个元素。问题是表中有 20,000 行,渲染速度非常慢。我只想影响视口中的元素(+- 一些),并且随着用户向下滚动更改其他元素,而不是一次更改它们。

4

1 回答 1

1

假设您要隐藏特定列。在创建表期间,将一个类附加到该列的每个 td (假设类被称为specialTD)。

像这样在你的css中输入:

table.hideCol .specialTD { 显示:无;}

现在,每当您需要隐藏/显示该列时,只需在表格中添加/删除该类即可。


附带说明一下,您的子选择器对我来说似乎不正确。

-n + 1 仅表示第一个 td。
n + 2 表示从秒开始的每个 td。

参考http://css-tricks.com/how-nth-child-works/

于 2012-12-20T20:04:44.837 回答