HTML:
<div class="main_holder">
<div class="input_holder">
<label for="something">Email</label><br/>
<input type="text" id="field_input" name="email" />
</div>
<a href="#" class="add">Add+</a>
<div class="input_holder">
<label for="something">Address</label><br/>
<input type="text" id="field_input" name="address" />
</div>
<a href="#" class="add">Add+</a>
<div class="input_holder">
<label for="something">Name</label><br/>
<input type="text" id="field_input" name="name" />
</div>
<a href="#" class="add">Add+</a>
</div>
Jquery的
$('a.add').click( function() {
var n=$(this).prevAll('.input_holder').size()+1;
$(this).prev('.input_holder').clone().insertBefore(this);
$(this).prev('.input_holder').find('label').append(n);
return false;
});
因此,如果我的标签名称是电子邮件,则结果是:
原因是这样做是因为在每次追加之后它会占用已经有数字的前一个。所以我现在的问题是如何解决这个问题,所以它只将每个数字放一次
我想要的结果:
答案 0 :(得分:0)
尝试使用正则表达式.replace
:
$(this).prev('.input_holder').find('label').append('0').text( function(i,str) {
return str.replace(/\d+$/, n);
});
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace
答案 1 :(得分:0)
HTML
<div class="main_holder">
<div class="input_holder">
<label for="something">Email</label><br/>
<input type="text" id="field_input" name="email" />
</div>
<a href="#" class="add">Add+</a>
<div class="input_holder">
<label for="something">Address</label><br/>
<input type="text" id="field_input" name="address" />
</div>
<a href="#" class="add">Add+</a>
<div class="input_holder">
<label for="something">Name</label><br/>
<input type="text" id="field_input" name="name" />
</div>
<a href="#" class="add">Add+</a>
</div>
<强> JS 强>
$('a.add').click( function(e) {
var $this = $(this),
$prev = $this.prevUntil('.add');
$prev.last().clone().insertBefore(this);
$this.prev('.input_holder').find('label').append($prev.length + 1);
e.preventDefault();
});
<强>的jsfiddle 强>
我修改了JS,但没有修改html。
这就是我所做的: