为什么每次add
和remove
new input
链接remove
和add
重复几次后呢?
例如:removeremoveremoveremove
或addaddaddaddaddaddadd
和...
示例(添加输入并查看):http://jsfiddle.net/zgWr3/6/
$(function () {
$('a.add_input').live('click', function (event) {
event.preventDefault();
var $class = '.' + $(this).closest('div.find_input').find('div').attr('class');
var newDiv = $(this).closest($class).clone();
$(this).closest($class).find('.add_input').remove()
//$(this).find('.adda').remove()
newDiv.find('.adda .mediumCell').append('<a href="" class="remove_input">remove</a>')
newDiv.find('input').each(function () {
$(this).prop('checked', false).val('');
});
$($class + ':last').after(newDiv);
//newDiv.remove('.adda')
//alert(newDiv)
});
$('a.remove_input').live('click', function (event) {
event.preventDefault();
var $class = '.' + $(this).closest('div.find_input').find('div').attr('class');
$(this).closest($class).prev().find('.adda .mediumCell').append('<a href="" class="add_input">add</a>')
$(this).closest($class).remove();
});
});
答案 0 :(得分:1)
你正在克隆div,其中包含链接,然后添加另一个。
编辑:你克隆div然后添加它,并附加一个remove_link(和删除中的add_link类似)。第一次没有链接,它的工作原理。当您调用clone()时链接存在第二次,因此您添加了一个副本。第3次存在2个链接,然后添加另一个链接。等等。
最好在函数之外构建字段的整个HTML,例如:
var divHTML = \'
<div class="field">\
<input type="text"/>\
<a class="remove_link">Remove</a>\
</div>';
...然后简单地在你的函数中添加$(divHTML)
,而不是你现在拥有的这个复杂的克隆/追加/操作函数。无论如何,可能有一种更简单,更直接的方法。
编辑2:像这样的东西
var divHTML = '\
<div class="mediumCell">\
<input type="text" name="price" placeholder="hello" title="تعرفه"\
class="numeric" style="width: 70px;">\
<a class="remove_input" href="#">remove</a>\
</div>';
$('a.add_input').live('click', function (event) {
event.preventDefault();
$(divHTML).insertBefore($(this));
});
$('a.remove_input').live('click', function (event) {
event.preventDefault();
$(this).closest('.mediumCell').remove();
});
编辑3:
好吧,你总是可以使用原来的add函数,只是在那里抛出一个not()过滤器,所以链接只会添加到第一个克隆上:
newDiv.find('.adda .mediumCell').not(':has(.remove_input)').append('<a href="" class="remove_input">remove</a>')
答案 1 :(得分:0)
每次从此代码点击“添加”链接时,您都会添加一个新的“删除”链接:
newDiv.find('.adda .mediumCell').append('<a href="" class="remove_input">remove</a>')
评论它可以正常工作,但是根本没有任何“删除”链接。我建议在现场活动之外添加“删除”链接,并在需要时对其进行操作。