2011-07-22 123 views
0

爲什麼在兩次點擊此代碼後添加幾個輸入?在jQuery中添加輸入的問題

$('.add_input').live('click', function() { 
      var scntDiv = '.'+$(this).closest('div.find_input').find('div').attr('class'); 
      var i = $('.adding').size(); 
      var input = $(scntDiv).clone().wrap("<div>").parent().html(); 
      alert(scntDiv) 
      $(scntDiv + ' .add_input').remove();    
      $(input).appendTo(scntDiv); 
      $('<div><a href="" class="remove_input"></a></div>').appendTo('.add_in'); 
      $(scntDiv + ' .add_in div a:first').remove('') 
      i++; 
      return false; 
     }); 

HTML:(我用這個網站的兩倍)

<div class="column find_input"> 
    <div class="ai_service"> 
      <div class="column"> 
       <div class="mediumCell"> 
        <input type="text" name="name" style="width: 160px;" placeholder="خدمات دیگر" title="نام پکیج تور خارجی"> 
       </div> 
      </div> 
      <div class="column" style="margin: 5px 3px;"> 
       <div class="mediumCell add_in"> 
        <a href="" class="add_input"></a> 
       </div> 
      </div> 
    </div> 
</div> 
+0

你能顯示爲你的html嗎? – Sotiris

+2

爲什麼你在做我++,我的範圍是在處理程序內,我沒有看到它在任何地方使用? – ShankarSangoli

+0

你是什麼意思?我該怎麼辦? –

回答

0

嗯,如果你只是想添加一個額外的輸入字段,你的代碼似乎有點過於複雜......試試這個?

$('a.add_input').live('click', function(e) { 
    e.preventDefault(); 
    var $this = $(this); 
    var $wrapper = $this.closest('div.find_input'); 
    var $input = $wrapper.find('input[name=name]').eq(0).clone(); 
    $wrapper.children('div').eq(0).append($input); 
}; 

我沒有從你的代碼,只是克隆複製的一切/添加新的輸入。如果您發佈了簡化代碼並且我的示例不適用,我表示歉意。另外,我想你想要克隆的輸入到div.ai_service?

就您爲什麼原始代碼添加多個輸入,您經歷的克隆過程可能首先克隆一個輸入,添加它,再次克隆整個事件(2個輸入),並添加2個等等。您可以使用$()。eq(0)將您的jQuery對象限制爲它找到的與您的選擇器匹配的第一個元素。

+0

還有一個問題,請幫我看看我的代碼 –

+0

請看這個鏈接,問題在哪裏? http://jsfiddle.net/539LR/3/ –

+0

我認爲這是你想要的,我從你的jsfiddle中刪除了一些代碼(對於你的問題似乎沒有必要)。試試這個:http://jsfiddle.net/539LR/11/ –

0

試試這個

$('a.add_input').live('click', function (e) { 
    e.preventDefault(); 
    var $column = $(this).closest("div.column"); 
    var input = $column.prev("div.column").clone().wrap("<div />").parent().html(); 
    $column.before($(input)); 

}); 
+0

謝謝,沒有區別。問題依然存在 –

+0

您想在哪個容器中添加新的輸入? – ShankarSangoli

+0

請參閱此鏈接,問題在哪裏? http://jsfiddle.net/539LR/3/ –