You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery中选择单个元素?解决新增输入框重复创建问题

解决jQuery中点击按钮重复克隆多个输入框的问题

你的问题我之前也碰到过,核心原因就是用siblings('input')会选中当前所有同级的input元素——第一次点击后页面已经有2个input了,第二次点击时就会一次性克隆两个,最终就出现了4个输入框。要解决这个问题,我们只需要每次只克隆一个目标input元素就行,给你两种简单靠谱的实现方式:

方法一:用prev()选择紧邻的前一个input

prev()方法只会选中当前元素的前一个同级元素,刚好就是我们需要克隆的那个输入框,代码修改如下:

$(".add_more_file").on("click", function(){ 
  var $input = $(this).prev('input').clone(); 
  $input.insertBefore($(this)); 
})

方法二:用.last()选择最后一个input

如果你的DOM结构后续可能有调整,或者需要确保克隆的是最新添加的那个输入框,可以用.last()筛选出同级input里的最后一个:

$(".add_more_file").on("click", function(){ 
  var $input = $(this).siblings('input').last().clone(); 
  $input.insertBefore($(this)); 
})

完整可测试代码

下面是修改后的完整代码,你可以直接运行验证效果:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="w_activity_licenses_inputs">
  <input class="upload" type="file" name="activity_licenses" required />
  <a class="add_more_file" style="display:block">Add more file</a>
</div>
a, input{ 
  display: block; 
  margin-bottom: 5px; 
} 
a{ 
  cursor: pointer; 
}
// 任选上面一种方法即可
$(".add_more_file").on("click", function(){ 
  var $input = $(this).prev('input').clone(); 
  $input.insertBefore($(this)); 
})

这样不管你点击多少次按钮,每次都会只新增一个输入框,完全符合你的需求~

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:58:33