javascript - 单击时,突出显示表列

标签 javascript php jquery html

使用我的表,用户可以对结果进行升序和降序排序。当他们单击标题按钮对该列进行排序时,我需要将其设置为更改所有列的背景(在该标题列的正下方)以更改背景颜色...到目前为止,这是我的代码: 这是 CSS:

<style type="text/css">
.move_right {
    padding-left: 5px;
}
.center-text {
    padding-right: 5px;
}
.bottom_center_text {
    padding-left: 2px;
}
#nav_bottom {
    height: 0px; !important
}
#portfolio_header {
    Background-color: #5E90B3;
    color: white;
    border: 1px solid #CCCCCC;
    font-weight: bold;
    font-size: 14px;
    margin-bottom: 0px;
    padding: 10px;
}
table#bin, table#fallen, table#growth, table#turn { margin:10px 0; border:1px solid #ccc; }
th, td { padding:10px 7px; }
tr th { background:#ededed; color:#545454; font-weight:bold; cursor:pointer;}
#bin tr.even td { background:#e1eff1; }
#turn tr.even td { background:#f7f2d8; }
#fallen tr.even td { background:#f2dcbd; }
#growth tr.even td { background:#deefdc; }
td.title a { text-decoration:none; display:block; text-transform:uppercase; font-weight:bold;}
#bin td.title { background:#5198a0; }
#fallen td.title { background:#e6a850; }
#turn td.title { background:#ebd870; }
#growth td.title { background:#6ab065; }
#bin td.title a { color:#182c2e; font-size:13px;}
#fallen td.title a { color:#352713;  font-size:13px;}

#turn td.title a { color:#37321a;  font-size:13px; }
#growth td.title a { color:#233d21;  font-size:13px;}
hr { border:2px dotted #ccc; border-bottom:none; }
#tooltip { position:absolute; z-index:3000; border:1px solid #111; background-color:#eee; padding:5px; }
#tooltip h3, #tooltip div, #tooltip p { margin:0; }


/*#bin tr.even td.click, th.click,*/ td.click, th.click
{
    background-color: #000000;
}
/*#bin tr.even td.hover, tr.hover,*/ td.hover, tr.hover
{
    background-color: #CCC;
}
/*#bin tr.even th.hover, tfoot td.hover,*/ th.hover, tfoot td.hover
{
    background-color: ivory;
}
/*#bin tr.even td.hovercell, th.hovercell,*/ td.hovercell, th.hovercell
{
    background-color: #abc;
}
/*#bin tr.even td.hoverrow, th.hoverrow,*/ td.hoverrow, th.hoverrow
{
    background-color: #6df;
}
</style>

这是 HTML:

        <table cellspacing="0" cellpadding="0" id="bin" width="100%">
        <thead>
            <tr>
                <th style="text-align:left; padding-top: 20px;" width="10%" title="Sort by Symbol" id="row-1" data-column="1">Symbol <img src="/images/sort-arrow-up.jpg" title="Sort by Symbol" alt="Sort by Symbol" class="sort-right move-left bottom-image" id="image1"/></th>
                <th style="text-align:left;" width="20%" title="Sort by Company Name" id="row-2" data-column="2">Company<br><span class="move_right">Name</span> <img src="/images/sort-arrow-up.jpg" title="Sort by Company Name" alt="Sort by Company Name" class="sort-right move-left" id="image2"/></th>
                <th style="text-align:center;" width="12%" title="Sort by Buy Date" id="row-3" data-column="3"><span class="center-text">Buy</span><br>Date <img title="Sort by Buy Date" src="/images/sort-arrow.jpg" alt="Sort by Buy Date" id="image3"/></th>
                <th style="text-align:center;" width="10%" title="Sort by Buy Price" id="row-4" data-column="4"><span class="center-text">Buy</span><br>Price &nbsp;<img title="Sort by Buy Price" src="/images/sort-arrow.jpg" alt="Sort by Buy Price" id="image4"/></th>
                <th style="text-align:center;" width="9%" title="Sort by Closed Price" id="row-5" data-column="5"><span class="center-text">Closed</span><br>Price &nbsp;<img title="Sort by Closed Price" src="/images/sort-arrow.jpg" alt="Sort by Closed Price" id="image5"/></th>
                <th style="text-align:center;" width="9%" title="Sort by Closed Date" id="row-6" data-column="6"><span class="center-text">Closed</span><br>Date &nbsp;<img title="Sort by Closed Date" src="/images/sort-arrow.jpg" alt="Sort by Closed Date" id="image6"/></th>
                <th style="text-align:center;" width="10%" title="Sort by Current Return" id="row-7" data-column="7"><span class="center-text">Total</span><br>Return &nbsp;<img title="Sort by Current Return" src="/images/sort-arrow.jpg" alt="Sort by Current Return" id="image7"/></th>
            </tr>
        </thead>
        <tbody>
<?php
    foreach($buylist as $a) {
        $bg = ($c % 2) ? ' class="even"' : '';
        $direction = (is_numeric($a['creturn']) && $a['creturn'] >= 0) ? 'up_green' : 'down_red';
        $tick = (is_numeric($a['creturn']) && $a['creturn'] >= 0) ? '<img src="/images/icon_up.gif">' : '<img src="/images/icon_down.gif">';
        $tick2 = (is_numeric($a['cchange']) && $a['cchange'] >= 0) ? '<img src="/images/icon_up.gif">' : '<img src="/images/icon_down.gif">';   
        $tick3 = (is_numeric($a['final_return_pct']) && $a['final_return_pct'] >= 0) ? '<img src="/images/icon_up.gif">' : '<img src="/images/icon_down.gif">'; 
        $type = '';
        $entry_price = (is_numeric($a['buyprice'])) ? '$'.$a['buyprice'] : '&ndash;';
        $sold_price = (is_numeric($a['sold_price'])) ? '$'.$a['sold_price'] : '&ndash;';
        $total_return= sprintf("%.02f", (($a['sold_price'] - $a['buyprice'])/$a['buyprice']) * 100);
?>
            <tr<?=$bg;?>>
                <td data-column="1"><b><a href="/gamechangers/getaquote/?symbolsearch=<?php echo $a['symbol']; ?>"><?=$a['symbol'];?></a></b><?=$type;?></td>
                <td data-column="2"><?=$a['name'];?></td>
                <td align="center" data-column="3"><?=$a['buydate'];?></td>
                <td align="center" data-column="4"><?=$entry_price;?></td>
                <td align="center" data-column="5"><?php echo $sold_price; ?></td>
                <td align="center" data-column="6"><?=$a['sold_date'];?></td>
                <td align="center" data-column="7"><?php echo $total_return; ?>%</td>
            </tr>
<?php
        $c++;
    }
?>
        </tbody>
    </table>

我尝试过使用插件,但没有用,因为我让 PHP 从数据库中获取内容并将其直接输入到表中。旁注:当 PHP 从数据库中获取内容时,它会将表中行的颜色从白色变为蓝色。

非常感谢任何帮助。

最佳答案

我会分配每个 <td><th>一个data-column指示它是哪一列的属性。然后点击 <th> , 捕获 data-column标题的属性并使用 jQuery(或类似的库)更改所有表格单元格的颜色 data-column属性。

示例表格标记:

<table id="table">
  <thead>
    <tr>
      <th data-column="1">Column 1</th>
      <th data-column="2">Column 2</th> // etc ....
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-column="1">contents</td>
      <td data-column="2">contents</td> // etc...
    </tr>
  </tbody>
</table>

示例 jQuery:

$('body').on('click', '#table th', function(){

  // Grab the column number
  var column = $(this).attr('data-column');

  // Reset any highlighted columns
  $('#table td').removeClass('highlighted'); 

  // Set all columns with the same column number to have the highlight class
  $('#table td[data-column='+column+']').addClass('highlighted');

})

希望对您有所帮助!

最好的, 安德鲁

关于javascript - 单击时,突出显示表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19732630/

相关文章:

javascript - 无法获取动态添加的文本区域的 outerHTML/值

php - 从 PHP 传递到 Javascript

php - 使用 unix 权限等属性组合传递变量的最佳方式

jquery - 沙里 (Sharrre) 失踪的 Google+ 计数

jquery - 滚动后菜单栏固定底部屏幕 ~20px

javascript - 错误 : querySrv ENOTFOUND _mongodb. _tcp.cluster0.kspub.mongodb.net

javascript - 获取 JSON 数据 : Syntax error

javascript - 检查数组是否相同有时不起作用?

用于创建 ISO 镜像的 PHP 类

jquery 不会在通过 ajax 加载的内容中触发