2011-09-10 59 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/ –