admin管理员组

文章数量:1404923

I want to give orange color to even rows through jQuery in table.

But that is not working for me.

Below is the html code:

<!DOCTYPE html>
<html lang="en">
    <head>
         <title>
         </title>
         <meta charset="utf-8" />
         <link rel="stylesheet" type="text/css" href="css/custom.css" />
    </head>
    <body>
        <table class="myTable">
            <tr>
                <td>
                    one
                </td>
                <td>
                    two
                </td>
            </tr>
            <tr>
                <td>
                    three
                </td>
                <td>
                    four
                </td>
            </tr>
            <tr>
                <td>
                    five
                </td>
                <td>
                    six
                </td>
            </tr>
            <tr>
                <td>
                    seven
                </td>
                <td>
                    eight
                </td>
            </tr>
        </table>
    <script type="text/javascript" src="js/jquery-3.1.1.min.js" ></script>
    <script type="text/javascript" src="js/custom.js" ></script>
    </body>
</html>

Below is the code in custom.css:

table,table td{
    border: 1px solid white;
    background: green;
    color: white;

}
.highlight{
    background: orange;
}

Below is the code in custom.js:

$(document).ready(function(){
    $('.myTable tr:even').addClass('.highlight');
});

I am a beginner in jQuery.

I am looking for a short and simple way.

I want to give orange color to even rows through jQuery in table.

But that is not working for me.

Below is the html code:

<!DOCTYPE html>
<html lang="en">
    <head>
         <title>
         </title>
         <meta charset="utf-8" />
         <link rel="stylesheet" type="text/css" href="css/custom.css" />
    </head>
    <body>
        <table class="myTable">
            <tr>
                <td>
                    one
                </td>
                <td>
                    two
                </td>
            </tr>
            <tr>
                <td>
                    three
                </td>
                <td>
                    four
                </td>
            </tr>
            <tr>
                <td>
                    five
                </td>
                <td>
                    six
                </td>
            </tr>
            <tr>
                <td>
                    seven
                </td>
                <td>
                    eight
                </td>
            </tr>
        </table>
    <script type="text/javascript" src="js/jquery-3.1.1.min.js" ></script>
    <script type="text/javascript" src="js/custom.js" ></script>
    </body>
</html>

Below is the code in custom.css:

table,table td{
    border: 1px solid white;
    background: green;
    color: white;

}
.highlight{
    background: orange;
}

Below is the code in custom.js:

$(document).ready(function(){
    $('.myTable tr:even').addClass('.highlight');
});

I am a beginner in jQuery.

I am looking for a short and simple way.

Share Improve this question edited Nov 13, 2016 at 8:52 Aniket Sahrawat 13k3 gold badges44 silver badges68 bronze badges asked Nov 13, 2016 at 7:04 R KR K 3277 silver badges23 bronze badges 1
  • Remove the . from addClass('.highlight'). – connexo Commented Nov 13, 2016 at 8:27
Add a ment  | 

4 Answers 4

Reset to default 3
$(document).ready(function(){
    $('.myTable tr:even').addClass('highlight');
});

Remove dot from addClass function

You dont really need jQuery to get this effect. Unless, you have a specific use case / requirement, you could just use the odd, even pseudo classes to acplish your need.

Here is a sample.

table,
table td {
  border: 1px solid white;
  background: green;
  color: white;
}
table tr:nth-child(even) td {
  background-color: orange;
}
.highlight {
  background: orange;
}
<table class="myTable">
  <tr>
    <td>
      one
    </td>
    <td>
      two
    </td>
  </tr>
  <tr>
    <td>
      three
    </td>
    <td>
      four
    </td>
  </tr>
  <tr>
    <td>
      five
    </td>
    <td>
      six
    </td>
  </tr>
  <tr>
    <td>
      seven
    </td>
    <td>
      eight
    </td>
  </tr>
</table>

This is a small example using CSS and jQuery :

// Execute a function when the DOM is fully loaded.
$(document).ready(function () {

    // Set the .alt class for the alternate rows
    $('.myTable tr:nth-child(even)').addClass('alt');
});
/** Style for the body **/
 body {
    font: 12px Tahoma, Arial, Helvetica, Sans-Serif;
}
/** Main class for the alternate rows **/
 .alt {
    background-color:#eee;
}
/** Style for the table **/
 .myTable {
    border-collapse:collapse;
    font-size: 0.917em;
    max-width:500px;
    min-width:450px;
}
.myTable td {
    border:1px solid #333;
    padding:4px 8px;
}
.myTable td:nth-child(1) {
    width:200px;
}
.myTable td:nth-child(2) {
    width:150px;
}
.myTable td:nth-child(3) {
    width:100px;
}
/** Style for the cointainer **/
 #body {
    clear: both;
    margin: 0 auto;
    max-width: 534px;
}
html, body {
    background-color:White;
}
hr {
    margin-bottom:40px;
}
<script src="https://ajax.googleapis./ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div id="body">
    
<h3>Table 1</h3>

    <table class="myTable">
        <tr>
            <td>As You Like It</td>
            <td>Comedy</td>
            <td>1600</td>
        </tr>
        <tr>
            <td>All's Well that Ends Well</td>
            <td>Comedy</td>
            <td>1601</td>
        </tr>
        <tr>
            <td>Hamlet</td>
            <td>Tragedy</td>
            <td>1604</td>
        </tr>
        <tr>
            <td>Macbeth</td>
            <td>Tragedy</td>
            <td>1606</td>
        </tr>
        <tr>
            <td>Romeo and Juliet</td>
            <td>Tragedy</td>
            <td>1595</td>
        </tr>
    </table>
    
<h3>Table 2</h3>

    <table class="myTable">
        <tr>
            <td>Hamlet</td>
            <td>Tragedy</td>
            <td>1604</td>
        </tr>
        <tr>
            <td>Macbeth</td>
            <td>Tragedy</td>
            <td>1606</td>
        </tr>
        <tr>
            <td>Romeo and Juliet</td>
            <td>Tragedy</td>
            <td>1595</td>
        </tr>
    </table>
</div>

You are almost there. The problems in your code are

  1. You want to highlight td and your selector is tr.

  2. Syntax for .addClass() should be addClass('highlight') and not addClass('.highlight').

Replace this:

$(document).ready(function(){
    $('.myTable tr:even').addClass('.highlight');
});

with:

$(document).ready(function(){
    $('.myTable td:odd tr').addClass('highlight');
});

According to documentation :odd selects even rows:

In particular, note that the 0-based indexing means that, counter-intuitively, :odd selects the second element, fourth element, and so on within the matched set.

RUNNING CODE:

$(document).ready(function(){
    $('.myTable tr:odd td').addClass('highlight');
});
table,table td{
    border: 1px solid white;
    background: green;
    color: white;

}
.highlight{
    background: orange;
}
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="myTable">
            <tr>
                <td>
                    one
                </td>
                <td>
                    two
                </td>
            </tr>
            <tr>
                <td>
                    three
                </td>
                <td>
                    four
                </td>
            </tr>
            <tr>
                <td>
                    five
                </td>
                <td>
                    six
                </td>
            </tr>
            <tr>
                <td>
                    seven
                </td>
                <td>
                    eight
                </td>
            </tr>
        </table>

本文标签: javascriptTargeting even rows of table through jQueryStack Overflow