jQuery addClass example

Change class name on click in jQuery

by techtricks

HTML

<div>
To see different view, resize the window
</div>
<div class="mv_table">
<div class="accordian_content">
</div>
<table id="simple_table">
 </table>
</div>

CSS

.mv_table #simple_table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

.mv_table #simple_table td, .mv_table #simple_table th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
  border: 1px solid gray;
}

.mv_table #simple_table tr:nth-child(even) {
  background-color: #dddddd;
}
.mv_table #simple_table tr > th {
    border: 1px solid gray;
    background: #1b90bb;
    color: #FFF;
}
/* Style the buttons that are used to open and close the accordion panel */
.mv_table .accordion {
 background-color: #eee;
 color: #444;
 cursor: pointer;
 padding: 12px;
 width: 100%;
 text-align: left;
 border: none;
 outline: none;
 transition: 0.4s;
 margin: 2px;
 border-radius: 8px;
}
/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
.mv_table .active, .accordion:hover {
  //background-color: #9fc2cf;
}

/* Style the accordion panel. Note: hidden by default */
.mv_table .panel {
  padding: 0 18px;
  background-color: white;
  display: none;
  overflow: hidden;
}
.mv_table .active{
 background-color: #1b90bb;
 color:white;
}
.mv_table .arrow{
 float:right;
}
.mv_table .darrow{
 display:none;
}
.mv_table .accordian_table{
 width: 100%;
}
.mv_table .accordian_table th{
 text-align: left;
}

/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {
  .mv_table .accordian_content {
 display:block;
  }
  .mv_table #simple_table{
 display:none;
  }
}

/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {
  .mv_table .accordian_content {
 display:block;
  }
  .mv_table #simple_table{
 display:none;
  }
}

/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {
  .mv_table .accordian_content {
 display:none;
  }
  .mv_table #simple_table{
 display:table;
  }
}

JavaScript

(function($) {

  var small_screen_heading = "name";
  var data = [
  {
   id: 001,
   name: "Santhosh Kumar",
   state: "aaa",
   country: "xyz",
   salary: "10,000"
  },
  {
   id: 002,
   name: "Bhaskar Reddy",
   state: "bbb",
   country: "xyz",
   salary: "10,000"
  },
  {
   id: 003,
   name: "Karunakar Kumar",
   state: "ccc",
   country: "pqr",
   salary: "10,000"
  }
  ];
  
   for (var i = 0; i < data.length; i++) {
   
   var accordianhtml = "<button class='accordion'>"+data[i][small_screen_heading]+"<span class='arrow rarrow'>&#8594;</span><span class='arrow darrow'>&#8595;</span></button><div class='panel'><p><table class='accordian_table'>";
   
   
   var table_row = null;
   var table_header = null;
   
   for (var key in data[i]) {
    //for accordian view
    accordianhtml = accordianhtml+"<tr><th>"+key+"</th><td>"+data[i][key]+"</td></tr>";
          
    if(i === 0){
     table_header = table_header+"<th>"+key+"</th>";
    }
    table_row = table_row+"<td>"+data[i][key]+"</td>";
   }
   
   if(i === 0){
    table_header = "<tr>"+table_header+"</tr>";
    $(".mv_table #simple_table").append(table_header);
   }
   
   table_row = "<tr>"+table_row+"</tr>";
   $(".mv_table #simple_table").append(table_row);
     
   accordianhtml = accordianhtml+"</table></p></div>";   
   $(".accordian_content").append(accordianhtml);
  
       }
  $(".accordion").click(function(){
  $(".panel").slideUp();
  $('.rarrow').show();
  $('.darrow').hide(); 
  if(!$(this).hasClass("active")){
   $(".accordion").each(function(){
    $(this).removeClass('active');   
   });
   $(this).addClass('active');
   $(this).next().slideDown();
   $(this).find('.rarrow').hide();
   $(this).find('.darrow').show();
  } else{
   $(".accordion").each(function(){
    $(this).removeClass('active');  
   }); 
  }
  });  
 })(jQuery);