遍历表格以更改子项的属性

时间:2015-07-09 19:49:39

标签: jquery

我有一个MVC表单表,我正在创建动态列表以推回到对象列表。使用名称的格式:"对象[0] .Property"。

但是我需要确保我的项目编号正确,我的想法是获取表格中的每一行,然后使用正确的数字重命名项目。

function reseq() {
        $('.EmpFunctRow').each(function(i) {
            var row = $(this);
            row.children('input').each(function() {
                this.name = "Approvals[" + i + "].appEmpID";
            });
        });
    }

有办法做到这一点吗?我似乎无法做对。我不一定需要遍历每个孩子,我只需要能够选择匹配的孩子。

我的第一次尝试确实有效,但每行中有多个项目我没有按行排列:

    var x = $('input[name^="Approvals"');
    for (var i = 0; i < x.length; i++) {
        x[i].name = "Approvals[" + i + "].appEmpID";
    }

有没有办法可以将这两种方法结合起来,对于每一行,获取与我要查找的名称相匹配的项目并更新它?

HTML:

<table id="EmpAssignedTable">
            <tr>
                <th></th>
                <th>Employee</th>
                <th>Route</th>
            </tr>
        </table>

模板被Ajax加入表中:

<tr class="EmpFunctRow">
<td>
    <input type="button" value="X" class="btnRemoveRow"/>
</td>
<td>
    <label class="lblEmp">@Model.EmployeeName</label><input type="hidden" name="Approvals[0].appEmpID" value="@Model.EmployeeID"/>
</td>
<td>
    <label class="lblFunct">@Model.FunctDesc</label><input type="hidden" name="Approvals[0].appFunctID" value="@Model.FunctID"/>
</td>

1 个答案:

答案 0 :(得分:2)

我认为这应该有效:

  1. 遍历所有行
  2. 查找行中的每个隐藏输入
  3. 获取隐藏输入之前的标签并使用它的类来构建输入的新名称
  4. 使用行的索引
  5. 分配新名称

    这是一个正在运行的例子。如果检查结果,则可以看到填充的名称。

    &#13;
    &#13;
    $(function() {
      $(".EmpFunctRow").each(function(index) {
        $(this).find('input[type="hidden"]').each(function() {
          var $this = $(this);
          var labelClass = $this.prev("label").attr("class").replace("lbl", "");
          $this.attr("name", "Approvals[" + index + "].app" + labelClass + "ID"); 
        });
      });
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <table>
      <tr class="EmpFunctRow">
        <td>
          <input type="button" value="X" class="btnRemoveRow"/>
        </td>
        <td>
          <label class="lblEmp"></label>
          <input type="hidden" />
        </td>
        <td>
          <label class="lblFunct"></label>
          <input type="hidden" />
        </td>  
      </tr>
      <tr class="EmpFunctRow">
        <td>
          <input type="button" value="X" class="btnRemoveRow"/>
        </td>
        <td>
          <label class="lblEmp"></label>
          <input type="hidden" />
        </td>
        <td>
          <label class="lblFunct"></label>
          <input type="hidden" />
        </td>  
      </tr>
    </table>
    &#13;
    &#13;
    &#13;