2011-09-10 37 views
1

添加类似类别的输入时出现问题(addinput_units)。添加类似类别的输入时出现问题

example当您点击“字段1”旁边的“添加”链接时,它会在值为“字段1”的“字段2”之后添加一个新的输入。

如何添加一个新的字段,使用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/

回答

2

我不是100%确定我明白了这个问题,但这是你要做什么?

$(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

+0

这是我原来的代码,不工作正确。看你:http://jsfiddle.net/FpsPh/4/ –

+0

我已经用我的JavaScript更新了你的jsfiddle(http://jsfiddle.net/FpsPh/5/),它仍然以我期待的方式工作。如果这不是您想要的行为,您是否可以尝试再次解释所需的行为?我无法理解你最初的问题。 – jmar777

0

试试用prev()而不是closest()?或者可能是找到元素的另一种方法。也许匹配一个ID到它并更改链接的ID,尝试使用不同类型的方法来找到你想克隆的元素。

+0

请给我的代码的例子在http://jsfiddle.net。 –

+0

这是我原来的代码,不正确。见你:http://jsfiddle.net/FpsPh/4/ –

1

您的问题是,您正在选择文档中的最后一个addinput_units格,而不是正确的td中的格。使用最接近:

$('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/

+0

这在原来的我的代码不工作正确。见你:http://jsfiddle.net/FpsPh/4/ –