2011-07-22 93 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/ –