0

调用函数时如何重新排序输入?

即:当现在单击a2 删除按钮时,我有a1、a3 和a4 我想重新排序,以便它是a1、a2(原为a3)和a3(原为a4)。我知道如何手动执行此操作,但是如何动态编写呢?

脚本:

    
    $(函数(){
        $('.deleteMe').click(function(){
            $(这个)
                .parent()
                .parent()
                。消除();
            //重命名属性
            ???
            $('#a3').attr('name', 'a2') //a3变成a2
            $('#a4').attr('name', 'a3') //a4变成a3
            返回假;
        });
    });
    

这是HTML:

<form name="myform" id="myform" method="post">
<table>
<tr>
  <td><input type="text" name="a1" id="a1" /></td>
  <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a1" /></td>
</tr>
<tr>
  <td><input type="text" name="a2" id="a2" /></td>
  <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a2" /></td>
</tr>
<tr>
  <td><input type="text" name="a3" id="a3" /></td>
  <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a3" /></td>
<tr>
</tr>
  <td><input type="text" name="a4" id="a4" /></td>
  <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a4" /></td>
</tr>
</table>
</form>
4

2 回答 2

2

在每个输入字段上添加一个class="renameable",然后执行以下操作:

$(function(){
  $('.deleteMe').click(function(){
    $(this).parent().parent().remove();
    $('#myForm').find('.renameable').each(function(i){
      $(this).attr('name', 'a'+i);
    });
    return false;
  });
});
于 2009-12-09T17:58:25.720 回答
1

如果您可以轻松选择所有输入,只需遍历所有输入并重命名即可。

container = $(this).parent().parent().parent();
// (delete input)
$(container).find("input:text").each(function(index) {
    $(this).attr("name", "a" + index);
});

然而问题出现了,你为什么需要这样做?你可以给它们都取同一个名字,大多数服务器站点的东西应该能够为你提供一个值列表。

于 2009-12-09T17:55:35.983 回答