使用Javascript/jQuery动态元素名称属性


Dynamic element name attributes with Javascript/jQuery

我的HTML结构是这样的:

<div>
  <input type="text" name="array[a][b][0][foo]" />
  <input type="text" name="array[a][b][0][bar]" />
  <select name="array[0][a][b][baz]>...</select>
</div>

其中元素值通过POST提交并由PHP处理。select元素附加了一个change事件,该事件克隆父div并将其附加在下面。

div被克隆时,元素的名称仍然相同,值会相互覆盖,我不希望发生这种情况。所有array[a][b]元素都是数组类型,因此我不能简单地使用array[a][b][] (foo/bar/baz值将不再分组)。

最好的方法是在克隆时更改名称?这意味着索引需要递增。这里我不能使用简单的el.name.replace(N, N + 1),因为名称中有可能多次出现n

您可以将一个类命名为父类<div>,并且在克隆时使用该类名。

<div class="a">
  <input type="text" name="array[a][b][0][foo]" />
  <input type="text" name="array[a][b][0][bar]" />
  <select name="array[0][a][b][baz]>...</select>
</div>
<div class="a">
  <input type="text" name="array[a][b][1][foo]" />
  <input type="text" name="array[a][b][1][bar]" />
  <select name="array[1][a][b][baz]>...</select>
</div>

然后,在你的javascript中你可以这样做:

var n = $('.a').length;

使用jquery返回2,您可以将其与replace函数一起使用。