javascript - how to ensure that each time a css class name changes from the previous, it is applied a specific style -
i have table structure shown below, , want make sure each time switches class 'odd' 'even' or 'even' 'odd', s inside row of new class applied style. in example, first 'even' row after 7 odd rows have s greater top padding rest, , then, first 'odd' row after (7 rows down) have greater top padding well.
i can use either css (preferred) or javascript / jquery accomplish this. how make happen? note not have ability generate initial table structure in different markup shown below.
table generating function (only concerned structure of 'newtable'):
  $('.table').each(function() {     var table = $(this); // cache table object     var head = table.find('thead th');     var rows = table.find('tbody tr').clone();      var newtable = $(       '<table class="table mobile">' +       '  <tbody>' +       '  </tbody>' +       '</table>'     );      // cache tbody we'll adding data     var newtable_tbody = newtable.find('tbody');      rows.each(function(i) {       var cols = $(this).find('td');       var classname = % 2 ? 'even' : 'odd';        cols.each(function(k) {         var new_tr = $('<tr class="' + classname + '"></tr>').appendto(newtable_tbody);         var headel = head.clone().get(k);         new_tr.append(headel);         new_tr.append($(this));         var isempty = $(headel).hasclass('empty'); //check table columns being used headers, make sure span 2 columns on mobile regular table data isn't wide column header. note assumes mobile `.table`s ever 2 columns         if (isempty){           $(this).attr('colspan',2);         }       });     });      $(this).after(newtable);   }      
you can achieve using css' + next sibling selector.
.odd {    color: red;  }  .even{    color: blue;  }    tr.odd + tr.even td {    padding-top: 20px;  }    tr.even + tr.odd td {    padding-top: 20px;  }  <table>    <tr class="even">      <td>sample row 01</td>    </tr>    <tr class="even">      <td>sample row 02</td>    </tr>    <tr class="even">      <td>sample row 03</td>    </tr>    <tr class="odd">      <td>sample row 04</td>    </tr>    <tr class="odd">      <td>sample row 05</td>    </tr>    <tr class="odd">      <td>sample row 06</td>    </tr>    <tr class="even">      <td>sample row 07</td>    </tr>    <tr class="even">      <td>sample row 08</td>    </tr>    <tr class="odd">      <td>sample row 09</td>    </tr>    <tr class="even">      <td>sample row 10</td>    </tr>  </table>  
Comments
Post a Comment