Struts2 + jQuery,如何更新 table 中选中项的样式

Struts2 + jQuery, how to update style of checked items in a table

我有一个 table,每行都有一个复选框和一个 :

<s:iterator value="myforms" var="form">
<tr>    
  <td class="text-center">
    <input type="checkbox" name="mycheck" value="on" class="my-check" data-form='<s:property value="#form.id"/>'>
  </td>
  <td class="text-center">
    <s:property value="#form.dateString"/>
  </td>
</tr>
</s:iterator>

和 table 下方名为“u”的复选框:

<input type="checkbox" name="u" id="u" value="true"/>

选中“u”时,更改所有选中的日期字符串(选中行复选框的所有行)的颜色。当“u”未选中时,所有 dateString 颜色为黑色。如何找到所有选中的 dateString 并更改它们的颜色。 我能想到的最好的是这个但不起作用:

$(function() {
  $('#u').click(function() {
    changeU(this.checked);
  });
});
function changeU(checked) {
  $('input:checkbox[class=my-check]:checked').each(function(i, e) {
    let c =  checked ? "red" : "black";
    $('<input>').xxx.css('color', c);
  });
};

按照现在的结构,您将不得不依赖 DOM 订购,这会很烦人。

<td> 上使用与复选框相同的方式使用 <s:iterator> 值。

这样就有一个可靠、一致的选择器用于包含日期字符串的 <td>

$(function() {
  $('#u').click(function() {
    changeU(this.checked);
  });
});

function changeU(checked) {
  $('input:checkbox[class=my-check]:checked').each(function(i, e) {
    const color = checked ? "red" : "black";
    const dataId = e.dataset.form
    $(`td[data-form=${dataId}]`).css('color', color)
  });
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table>
  <tr>
    <td class="text-center">
      <input type="checkbox" name="mycheck" value="on" class="my-check" data-form='1'>
    </td>
    <td class="text-center date-string" data-form='1'>
      some date
    </td>
  </tr>

  <tr>
    <td class="text-center">
      <input type="checkbox" name="mycheck" value="on" class="my-check" data-form='2'>
    </td>
    <td class="text-center date-string" data-form="2">
      some date
    </td>
  </tr>
</table>

<input type="checkbox" name="u" id="u" value="true" /> Click me