Jquery将css类添加到表的第一行

时间:2016-07-06 09:49:51

标签: jquery html css

大家好我正在尝试使用jquery将css类添加到表的第一个tr中。我知道这应该是非常容易的,我找到了许多提供正确解决方案的链接和问题。像这三个和其他人一样:

How to get the id of first <tr> of <tbody> in HTML table using jQuery?

JQuery, select first row of table

How do I style the first row of every table on the page using jQuery

但对我来说,这些都不起作用。

我有一个ID为DataTableMovimenti的表,我想应用css类&#34; ct-active&#34;

我尝试了以下说明:

$("#DataTableMovimenti tr:first").addClass('ct-active');
$("#DataTableMovimenti").find("tr:first-children").addClass("ct-active");
$("#DataTableMovimenti").find("tr:first").addClass("ct-active");
$("#DataTableMovimenti").find("tr:eq(0)").addClass("ct-active");
$("#DataTableMovimenti").find("tbody tr:eq(0)").addClass("ct-active");
$("#DataTableMovimenti").children("tr:first").addClass("ct-active");
$("#DataTableMovimenti").closest('tr').addClass('ct-active');

我在jsp中的$document.ready()函数中插入了代码,因为我想在进入页面时突出显示表格的第一行。

该表具有以下结构:

<table id="DataTableMovimenti" class="table ct-datatables">
<thead>
   <tr></tr>
      ............
</thead>
<tbody>
    <tr id="tableRowId" class="table-row-tr"></tr>
      ...........
</tbody>
</table>

我想更改tbody部分中第一个tr的css类。 提前致谢

5 个答案:

答案 0 :(得分:5)

在选择器中添加tbody

$("#DataTableMovimenti tbody tr:first").addClass('ct-active');
.ct-active{
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="DataTableMovimenti">
  <thead>
    <tr>
      <td>First thead</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>First tbody</td>
    </tr>
     <tr>
       <td>Second tbody</td>
     </tr>
  </tbody>
</table>

最好使用 css

#DataTableMovimenti tbody > tr:first-child {
  color:red;
 }
    <table id="DataTableMovimenti">
      <thead>
        <tr>
          <td>First thead</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>First tbody</td>
        </tr>
        <tr>
          <td>Second tbody</td>
        </tr>
      </tbody>
    </table>

答案 1 :(得分:1)

试试这个:

$('#DataTableMovimenti tbody tr:first-child').addClass('ct-active');

答案 2 :(得分:1)

:first 伪类等同于:eq(0)。它也可以写成:lt(1)。虽然这只匹配一个元素,但:first-child 可以匹配多个:每个父元素一个。

附加说明:

因为:first 是jQuery扩展而不是CSS规范的一部分,所以查询使用:first无法利用本机DOM提供的性能提升 querySelectorAll()方法。要在使用:first 选择元素时获得最佳性能,首先使用纯CSS选择器选择元素,然后使用 .filter(&#34;:first&#34;)。 所选元素按其在文档中的外观顺序排列。例如:

$("table tr:first").addClass('yourclass-name');

或者对于特定的表格:

$("#myTable tr:first").addClass('yourclass-name');

&#13;
&#13;
$("tr:first").addClass("demo-class");
&#13;
td {
  color: blue;
  font-weight: bold;
}
.demo-class {
  background-color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>first demo</title>
</head>

<body>

  <table>
    <tr>
      <td>Row 1</td>
    </tr>
    <tr>
      <td>Row 2</td>
    </tr>
    <tr>
      <td>Row 3</td>
    </tr>
  </table>


</body>

</html>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

有一个名为:first的jQuery伪选择器,就像CSS :first-of-type:first-child,区别在于:first只会选择 THE 第一个元素,而不是符合成为父母第一个孩子标准的每个元素。顺便说一下,在处理表格时,最好在选择器中指定<tbody>,否则最终会定位<tr>中的<thead>

$(function() {
  $('#DataTableMovimenti tbody tr:first').removeClass("table-row-tr").addClass("table-row-tr-Active");
});
.table-row-tr-Active {
  background: red;
}
table {
  width: 200px;
}
table,
td {
  border: 2px solid grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<table id="DataTableMovimenti" class="table ct-datatables">
  <thead>
    <tr>
      <td>HEADER</td>
    </tr>

  </thead>
  <tbody>
    <tr id="tableRowId" class="table-row-tr">
      <td>CELL</td>
    </tr>

  </tbody>
</table>

答案 4 :(得分:0)

最好的方法是使用伪选择器:首先。

$('#DataTableMovimenti tbody tr:first').addClass('active');