2014-02-10 2 views
0

Я делаю это в PHP: ++$r%2?'odd':'even' для применения полосатых строк ..

<tr class="<?=++$r%2?'odd':'even'?>"><td>...</td></tr> 

Но когда я получаю корыто записей $.ajax -request, я возвращаю результат:

$('#table_selected tbody').empty(); // empty the table 
$.ajax({ // fetch new data and insert into new rows 
    ... 
    success: function(data){ 
     $.each(data, function(i, array){ 
      $('#table_selected tbody').append('<tr><td>'+array['name']+'</td></tr>'); 
     }); 
    } 
}); 

То, что я хотел бы сделать, - добавить odd/even -класс в <tr> -элемент на каждую другую строку - например, я делаю в php.

Есть ли аналогичный способ достижения этого в js/jqyery?

Я прочитал этот ответ: How do I add odd/even class only for table rows which haven´t had odd/even class yet?, и я думаю, что это начало того, что я хочу достичь, но не знает, как работать решение в мой код:

$("table tbody tr:nth-child(odd)").addClass("odd"); 
$("table tbody tr:nth-child(even)").addClass("even"); 
+2

'$ ("# table_selected TBODY тр: п-й ребенок (нечетные)"). AddClass ("нечетный"); $ ("# table_selected tbody tr: nth-child (even)"). addClass ("even"); 'после каждого цикла –

+2

В чем используются классы' odd' и 'even'? Если это чисто стилизация, возможно, существует только CSS-решение, которое устраняет необходимость в PHP и JavaScript. –

+2

Существует только способ CSS, но он не работает в IE8 или ниже. например в CSS поместите tr: nth-child (нечетный) {background-color: # 333;} – MarkP

ответ

2

Если вы действительно просто нужны дисковым таблицы нечетные/четные строки, вы не могли бы просто добавить к вашей CSS для страницы:

#table_selected tbody tr:nth-child(odd){ background-color: green; } 
#table_selected tbody tr:nth-child(even){ background-color: yellow; } 

Если вам нужны классы, как и Arun P Johny предлагает в комментариях, вы обновляете свой скрипт так:

$('#table_selected tbody').empty(); // empty the table 
$.ajax({ // fetch new data and insert into new rows 
    ... 
    success: function(data){ 
     $.each(data, function(i, array){ 
      $('#table_selected tbody').append('<tr><td>'+array['name']+'</td></tr>'); 
     }); 

     $("#table_selected tbody tr:nth-child(odd)").addClass("odd"); 
     $("#table_selected tbody tr:nth-child(even)").addClass("even"); 
    } 
}); 

или как это (более аналогично РНР пути):

$('#table_selected tbody').empty(); // empty the table 
$.ajax({ // fetch new data and insert into new rows 
    ... 
    success: function(data){ 
     $.each(data, function(i, array){ 
      $('#table_selected tbody').append(
       $('<tr><td>' + array['name'] + '</td></tr>') 
        .addClass(i % 2 ? 'odd' : 'even') 
      ); 
     }); 
    } 
}); 
+0

Второе предлагаемое вами дополнение добавляет класс только к 'table tbody'. Но я использовал '(i% 2? 'Odd': 'even')' как это вместо этого: ''. – ThomasK