【问题标题】:jQuery Table Columns / Rows Hide or Change colorjQuery 表格列/行隐藏或更改颜色
【发布时间】:2012-04-25 21:12:35
【问题描述】:

现在我正在考虑一个想法,我想更改颜色(可能最终删除/隐藏)一列或一行数据现在我的目标是列。到目前为止,我已经部分工作但不完全

用这个:

$('#'+arry[0]+' tr td:eq('+arry[1]+')').css({"background-color":"FF0"});

我能够影响该列,但只能影响一行,而不是该列中的所有行,并且它似乎影响了“tbody”中的行/列,而不是“thead”或“tfoot”我需要影响所有 3.

我正在使用的表格示例如下:

<table id="testerTable">
    <thead>
        <th>First</th>
        <th>Second</th>
        <th>Third</th>
        <th>Fourth</th>
        <th>Fifth</th>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
    </tbody>
</table>

我认为我的方法很简单,所以我需要一些想法。这最终将用于 datatables.net 中的数据表,但首先我需要弄清楚这部分。

****编辑****

arry 变量当前取自其他东西的 rel 属性arry[0] 是表 id.. 而arry[1] 是在这种情况下 0-4 列的位置

【问题讨论】:

  • arry 看起来怎么样? “列的位置”是什么?
  • 编辑显示。但是在提到的属性中,它看起来像 testerTable::2 例如
  • 好的,我想我明白了。往下看。

标签: jquery html datatable html-table


【解决方案1】:

demo jsBin

var string= 'testerTable::2'; // your data // test with: 0,1,2,3,4
var arry= string.split('::'); // split to separate values

var $tr = $('#'+arry[0]+' tr');


$('#'+arry[0]+' th').eq(arry[1]).css({"background-color":"FF0"});

$tr.each(function(el){ // iterate through all 'tr' to find relative 'td' .eq()
  $(this).find('td').eq(arry[1]).css({"background-color":"FF0"});
});

【讨论】:

    【解决方案2】:

    我会使用&lt;colgroup&gt; 为列着色,因为它可以快速且易于操作。

    http://www.w3schools.com/tags/tag_col.asp

    举个例子,你可以说:

    <colgroup>
      <col style="background-color:FF0" />
      <col span="4" />
    </colgroup>
    

    并使用 jquery 或其他方式编辑整个 colgroup。

    【讨论】:

    • 很遗憾,数据表不支持 colspan,目前无法使用。我希望它对我来说就像 colspan 一样简单:-)
    • @chris 嗯,我刚刚在他们的网站上看到了一条评论,上面说了同样的话(哦,关于 colgroup,而不是 colspan),但他们说如果你使用它不会有任何不好的事情发生。也许他们应该考虑一下。
    • 我使用的大多数表都是通过数据表动态生成的,因此添加 col (group/span) 有点困难(也许在我们生成的新表上没有那么多,但是整个系统中现有的),总体上试图提出一个涵盖所有基础的解决方案。
    【解决方案3】:

    您可以只为第 1 列中的每个元素指定类 'c1',然后执行 $('.c1').css... 这样可以省去 th/tr/td 区别的麻烦。当然,你会为每一列都这样做。

    顺便说一句,它的拼写是“数组”:)

    【讨论】:

    • 我知道它的拼写数组,但是当我通过对原始属性所做的溢出定义它时,我给出的变量名是 arry :) 我必须看看数据表是否支持对每一列进行分类的概念,例如那
    • 很高兴了解拼写:) 为表格元素提供类也可以,因此如果您愿意,您可以这样做。
    • 不过,您不能在每列中一次点击。您必须将类添加到每个 td 元素。
    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多