[英]jQuery: Generate “name” Attribute Array Dynamically
我有这样的形式:
<form>
<div class="repeatable">
<div class="repeatable">
<div class="repeatable">
<input name="level_three">
<input name="inner_three">
<a>+</a>
</div>
<input name="level_two">
<a>+</a>
</div>
<input name="level_one">
<a>+</a>
</div>
</form>
加号克隆最接近其自身的整个repeatable
。 我想要一个jQuery函数迭代repeatable
的,并使输入名称是一个像这样的数组:
<form>
<div class="repeatable">
<div class="repeatable">
<div class="repeatable">
<input name="level_three[0][0]">
<input name="inner_three[0][0]">
<a>+</a>
</div>
<div class="repeatable">
<input name="level_three[0][1]">
<input name="inner_three[0][1]">
<a>+</a>
</div>
<input name="level_two[0]">
<a>+</a>
</div>
<div class="repeatable">
<div class="repeatable">
<input name="level_three[1][0]">
<input name="inner_three[1][0]">
<a>+</a>
</div>
<div class="repeatable">
<input name="level_three[1][1]">
<input name="inner_three[1][1]">
<a>+</a>
</div>
<div class="repeatable">
<input name="level_three[1][2]">
<input name="inner_three[1][2]">
<a>+</a>
</div>
<input name="level_two[1]">
<a>+</a>
</div>
<input name="level_one">
<a>+</a>
</div>
</form>
我们可以有任意数量的repeatable
。 在示例中,共有3个级别。 它可以是1、2、3、4或任何数字。
$(function(){
$('form > .repeatable').each(function(l1_Index, l1_elem){
$('> .repeatable', l1_elem).each(function(l2_Index, l2_elem){
$('> .repeatable', l2_elem).each(function(l3_Index, l3_elem){
$('input', l3_elem).each(function(input_Index, input_elem){
var computed = (input_Index === 0 ? 'level_three' : 'inner_three') +
'[' + l1_Index + ']' + '[' + l2_Index + ']' ;
$(input_elem).attr('name', computed);
});
});
});
});
});
在此处查看代码示例https://jsbin.com/colocunoqo/edit?html,js,输出
ps任何模板化的lib(例如angular)都将使您超级轻松
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.