Come addClass al primo td in ogni tr all'interno di una tabella utilizzando jQuery
-
09-09-2019 - |
Domanda
Sto cercando di aggiungere una classe al primo TD in una tr all'interno di una classe specifica. Ma per qualche ragione si aggiunge questa classe solo per il primo td nel primo TR -non il primo TD in ogni tr
$("#appendTD").find("#gridFormInformation").children(0).children().each(
function() {
if ($("#appendTD").find('tr').filter(function() { return $(this).attr('class') == 'ui-widget-content ui-subtblcell'; }).children("td:eq(0)").addClass("leftbord"));
}
);
Ma quando ho alterare il sopra rimuovendo il simbolo "?" Td: eq (0)" si aggiunge questa classe per ogni td in ogni tr ... così che cosa sto facendo di sbagliato
Esempio di markup seguente
<td id="appendTD">
<table id="gridFormInformation">
<tbody>
<tr><th>1</th><th>2</th><th>3</th></tr>
<tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
<tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
<tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
</td>
Soluzione
Sembra a me come si sta utilizzando un metodo manuale complicato per trovare la TDS che si desidera aggiungere alla classe a. Credo che sarebbe più facile da utilizzare selettori jQuery per trovare il tuo TDS.
Sostituire
$("#appendTD").find("#gridFormInformation").children(0).children().each(
function() {
if ($("#appendTD").find('tr').filter(function() { return $(this).attr('class') == 'ui-widget-content ui-subtblcell'; }).children("td:eq(0)").addClass("leftbord"));
}
);
con
$("#gridFormInformation tr.ui-widget-content.ui-subtblcell").find("td:first").addClass("leftbord");
Questo sarebbe trovare tutti i TRS e per ogni TR trovare il primo td e aggiungere la classe a questo.
Altri suggerimenti
Cambia 'td:eq(0)
a 'td:first'
.
Questo metodo è quello di aggiungere leftbord
alla prima <td>
in ogni riga della tabella gridFormInformation
:
$('#gridFormInformation tr td:first-child').addClass('leftbord');