MVC6 - 如果(勾选复选框)则删除线

MVC6 - if(checkbox ticked) then strikethrough

我有以下代码:

<table class="table">
@foreach (var item in Model.AllTasks)
{
    <tr>
        <td>
            <input type="checkbox"/>
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TaskDetails)
        </td>
    </tr>
}

我希望能够读取该复选框是否已勾选,如果已勾选,则在 TaskDetails 上应用删除线。目前我正在努力寻找任何简单的方法来实现这一目标。

有什么想法吗?谢谢!

向您的模型添加一个布尔值 属性 以确定任务是否完成:

public bool IsComplete { get;set; }

那么在您看来,您可以执行以下操作:

@foreach (var item in Model.AllTasks)
{
   @:<tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>
      @if (item.IsComplete)
      {
      @:<strike>
      }
      @Html.DisplayFor(modelItem => item.TaskDetals)
      @if (item.IsComplete)
      {
       @:</strike>
      }
    </td>
  @:</tr>
}

这只是检查状态,然后有条件地打印 strike 标签。

Working fiddle

如果您想通过 javascript 执行此操作,因为他们会选中此框,您可以使用以下代码:

  $("[type=checkbox]").change(function() {
    if(this.checked) {
     $(this).parent().next().wrapInner("<strike></strike>")
    }
   });

这会用 strike 标签动态换行文本。

jsFiddle

使用 jquery 你可以像下面的代码片段一样轻松地做到这一点。

$("input[type=checkbox]").change(function() {
  if (this.checked) {
    $(this).parent().next().css('text-decoration', 'line-through');
  } else {
    $(this).parent().next().css('text-decoration', 'none');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input type="checkbox"></td><td> Box 1 </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td><td> Box 2 </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td><td> Box 3 </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td><td> Box 4 </td>
  </tr>
</table>