添加类似类的输入时出现问题

时间:2011-09-10 13:57:27

标签: javascript jquery

我在添加类似类(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/

3 个答案:

答案 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) - 它只会返回一个元素。

演示:http://jsfiddle.net/FpsPh/2/

答案 2 :(得分:0)

尝试使用prev()代替closest()?或者也许是找到元素的不同方法。也许将ID与其匹配并更改链接ID,尝试使用不同类型的方法来查找要克隆的元素。