我有这个HTML
<form method="POST" action="" id="order" class="forms">
<div>
<span class="col1">Ref.</span>
<span class="col2">Number</span>
<span class="col3">Color</span>
<span class="col4">Remarks</span>
<span class="col5">Prijs</span>
</div>
<div class="order">
<input type="text" name="ref-1" class="col1" />
<input type="text" name="num-1" class="col2" />
<input type="text" name="color-1" class="col3" />
<input type="text" name="remark-1" class="col4" />
<input type="text" name="price-1" class="col5" />
</div>
<a id="add" href="#">+</a>
</form>
这个jquery
$("#add").click(function() {
$("#order").children(":eq(1)").clone().each(function() {
var index = $("#order").children().length - 1;
alert(index);
$(this).children().find(":input").each(function() {
alert(index);
$(this).attr("[name]", function(i, v) {
return v.substr(0, v.lastIndexOf("-") + 1) + index;
}).val("");
});
}).insertBefore("#add");
});
我需要将每个输入名称的-1部分替换为递增的值。
但是js永远不会进入$(this).attr()
函数
当我运行此代码时,单击#add
答案 0 :(得分:3)
我没有检查过你的整个代码,但是
中有一个明显的错误.attr("[name]"
应该是
.attr("name"
您还需要从
行中删除.children()
$(this).children().find(":input")
并制作
$(this).find(":input")
这是因为this
指的是包含输入的div
元素。通过运行.children()
,它返回input
元素,并通过执行find()
,它不返回任何内容,因为查找所选元素内部,而不包括它运行的元素。
在http://jsfiddle.net/gaby/TpmdP/更新了jsfiddle
答案 1 :(得分:0)
删除.find(“:input”)并将“:input”作为参数传递给.children()。 children()甚至可以通过过滤元素来检索子元素。