Search code examples
jquerycsscss-selectors

Make css nth-child() only affect visible


Is there a way to only affect visible elements with this css?

table.grid tr.alt:nth-child(odd)
{
    background:#ebeff4;
}

table.grid tr.alt:nth-child(even)
{
    background:#ffffff;
}

If i use a $('select some tr:s').hide() that hides some of the rows i get a mix of odd and even styling but all in a mixup.


Solution

  • I ended up using the solution Rodaine suggested in his comment, after the show/hide i do this:

    $('.alt:visible:odd').css('background', '#EBEFF4');
    $('.alt:visible:even').css('background', '#FFFFFF'); 
    

    In my case the setting of background broke my hover, this was solved with !important to make the hover background stick.

    table.grid tr.hover:hover
    {
        cursor:pointer;
        background:#D2E0E9 !important;    
    }