我在添加类似类(addinput_units
)的输入时遇到问题。
在example单击“字段1”旁边的“添加”链接时,它会在“字段2”后面添加一个值为“字段1”的新输入。
如何在HTML中与类似类(addinput_units
)最接近“添加”链接的输入后添加新字段?
示例: http://jsfiddle.net/FpsPh/
$(function () {
$('a.add_input').live('click', function (event) {
event.preventDefault();
var $class = '.' + $(this).closest('div.find_input').find('div').attr('class').split(" ")[0];
var newDiv = $($(this).closest($class).get(0)).clone(false);
$(this).closest($class).find('.add_input:first').remove()
newDiv.hide().fadeIn('slow');
$($class + ':last').after(newDiv);
});
});
EDITE:
这是原始的我的代码不能正常工作。见到你:http://jsfiddle.net/FpsPh/4/
答案 0 :(得分:2)
我不是百分百肯定我理解这个问题,但这就是你想要的吗?
$(function () {
$('a.add_input').live('click', function (event) {
event.preventDefault();
var $this = $(this),
$div = $this.closest('div'),
$clone = $div.clone().hide()
.insertAfter($div).fadeIn('slow');
$this.remove();
});
});
这是更新的jsFiddle。
答案 1 :(得分:1)
您的问题是您选择的是文档中的最后一个addinput_units
div,而不是正确的td
中的div。使用最接近:
$('a.add_input').live('click', function (event) {
event.preventDefault();
var $class = '.' + $(this).closest('div.find_input').find('div').attr('class').split(" ")[0];
var newDiv = $(this).closest($class).clone(false);
newDiv.hide().fadeIn('slow');
$(this).closest($class).append(newDiv).find('.add_input:first').remove()
});
你也不需要在最近的地方调用get(0)
- 它只会返回一个元素。
答案 2 :(得分:0)
尝试使用prev()
代替closest()
?或者也许是找到元素的不同方法。也许将ID与其匹配并更改链接ID,尝试使用不同类型的方法来查找要克隆的元素。