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

如何实现每个repeatable父容器单独保留最后一个repeating-div子元素

解决单个父容器下保留最后一个子元素的问题

我明白你的问题了——你的当前代码是在统计所有.repeatable容器下的.repeating-div总数,而不是针对点击按钮所在的那个父容器单独计数,所以才会出现无法单独控制每个容器只留最后一个子元素的情况。

修正后的jQuery代码

关键是要先定位到当前点击按钮所属的.repeatable父容器,再统计该容器下的子元素数量:

$('.repeatable').on('click', '.close-repeating-div', function(e) {
    e.preventDefault();
    // 找到当前按钮所在的父容器.repeatable
    var parentContainer = $(this).closest('.repeatable');
    // 统计当前父容器下的.repeating-div数量
    var countdiv = parentContainer.children('.repeating-div').length;
    // 只有当前父容器子元素数量>1时,才允许删除
    if (countdiv > 1) {
        $(this).closest('.repeating-div').remove();
    }
});

完整代码示例

下面是整合了修正后脚本的完整代码,确保每个.repeatable容器独立控制子元素的删除:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<div class="repeatable">
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
</div>
<div class="repeatable">
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
  <div class="repeating-div">
    <input type="text" class="form-control">
    <a href="#" class="btn close-repeating-div form-control"><i class="fa fa-remove" aria-hidden="true"></i></a>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
<script>
$('.repeatable').on('click', '.close-repeating-div', function(e) {
    e.preventDefault();
    var parentContainer = $(this).closest('.repeatable');
    var countdiv = parentContainer.children('.repeating-div').length;
    if (countdiv > 1) {
        $(this).closest('.repeating-div').remove();
    }
});
</script>

核心逻辑说明

  • $(this).closest('.repeatable'):从当前点击的按钮出发,向上查找最近的.repeatable父容器,确保我们只操作当前按钮所在的那个容器
  • parentContainer.children('.repeating-div').length:统计这个特定父容器下的子元素数量,而不是全局所有的
  • 只有当该容器下的子元素数量大于1时,才执行删除操作,保证每个.repeatable容器最终至少保留一个.repeating-div

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:58:02