【问题标题】:how to remove multiple div element generated by onclick using jquery如何使用jquery删除onclick生成的多个div元素
【发布时间】:2017-05-04 09:39:50
【问题描述】:

我可以使用单击添加一个 div 内容,并且可以生成多个或多个,但我也想在用户单击删除按钮时删除该生成的 div。我已经尝试了一些,但它只删除了一次。如果我在单击时生成了一个,那么当我单击删除时它会被删除,但是当我生成两个或更多时它不起作用。

$(document).ready(function() {
       
        $("button[name='addDom']").click(function() {
            
            var domElement = $('<div class="row " id="removechild"><hr><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">First Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="first_name" placeholder="First Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Last Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="last_name" placeholder="Last Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Gender</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"> <option value="">Male</option><option value="">Female</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Date of Birth</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input type="date" class="form-control" id="exampleInputDOB1" placeholder="Date of Birth" required="required" style="width:124%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Class Coordinator (if applicable)</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="class_coordinator" placeholder="Class Coordinator Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div></div><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">School Currently Attending</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="school" placeholder="School Currently Attending" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Relation with child</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> <input name="relation" placeholder="Relation with child" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Types of soccercric</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"><option value="">Soccer</option><option value="">Cricket</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Child medical condition <br> <span style="font-size:10px">Please indicate any relevant medical conditions or allergies your child may have (not required if your child has no relevant medical issues)</span></label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="relation" placeholder="Child medical condition" class="form-control" type="text" required="required" style="width:200%"></div></div></div</div</div><br><br><br><button onclick="clearBox()" class="btn btn-danger">Remove Child</button><hr>');
            $(this).after(domElement);
        });
    
});

 function clearBox(removechild)
    {
        document.getElementById('removechild').innerHTML = "";
    }
    $("#removechild").html("");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button name="addDom" class="btn btn-warning"> Add Child</button>
看看sn-p !!!如何摆脱它以及任何替代解决方案...... 提前致谢

【问题讨论】:

  • ID 应该是唯一的.. 使用类而不是使用该类来删除添加的元素
  • @guradio 我认为前提是每个元素中都有一个按钮可以删除元素本身。在这种情况下,正如您所说,ID 必须是唯一的,并且应该根据此 ID 清空元素。使用该类将清除所有我认为不是目标的项目。
  • 我建议你考虑使用模板库,因为它绝对是要包含在 JS 代码中的大量 HTML。
  • @DouwedeHaan 它不是重复的 ,,

标签: javascript jquery html css


【解决方案1】:

在您的 addDom 中单击添加此代码

   var domElement = $('<div class="child"><div class="row "><hr><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">First Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="first_name" placeholder="First Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Last Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="last_name" placeholder="Last Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Gender</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"> <option value="">Male</option><option value="">Female</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Date of Birth</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input type="date" class="form-control" id="exampleInputDOB1" placeholder="Date of Birth" required="required" style="width:124%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Class Coordinator (if applicable)</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="class_coordinator" placeholder="Class Coordinator Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div></div><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">School Currently Attending</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="school" placeholder="School Currently Attending" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Relation with child</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> <input name="relation" placeholder="Relation with child" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Types of soccercric</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"><option value="">Soccer</option><option value="">Cricket</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Child medical condition <br> <span style="font-size:10px">Please indicate any relevant medical conditions or allergies your child may have (not required if your child has no relevant medical issues)</span></label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="relation" placeholder="Child medical condition" class="form-control" type="text" required="required" style="width:200%"></div></div></div</div</div><br><br><br><button class="removeChild" class="btn btn-danger">Remove Child</button><hr></div>');
$(this).after(domElement);

然后在外面粘贴这个

$(document).on('click','button.removeChild',function(){
     $(this).closest('div.child').hide();
 });

它会起作用的!

【讨论】:

  • ID 仍然需要是唯一的,否则 document.getElementById() 将无法正常运行。
【解决方案2】:

您需要分配一个唯一 ID,然后在 clearBox 函数中提供此唯一 ID。

$(document).ready(function() {
    var count = 0;

    $("button[name='addDom']").click(function() {
        var uniqueID = "removechild-" + count,
            html = '<div class="row" id="' + uniqueID + '">row of stuff<button onclick="clearBox(\'' + uniqueID + '\')" class="btn btn-danger">Remove Child</button></div>';

        $(this).after(html);

        count++;
    });
});

function clearBox(idToRemove) {
    document.getElementById(idToRemove).innerHTML = "";
}

CodePen 示例:https://codepen.io/JoeHastings/pen/dWzwMB

【讨论】:

  • 你好@Joe 这个答案帮助了我。现在我有新问题,你能帮帮我吗?我想根据输入字段数据附加 div,例如,如果任何用户在输入字段中输入 5 我想附加 5 个 div,我尝试了一些,但我使用的向导表单无法设置 e.preventDefault :(
  • 您的意思是要附加一个 ID 为 5 的 div 还是要附加 5 个单独的 div?另外,您使用向导表单是什么意思?你的问题听起来很可能——如果你有一个问题的代码笔/jsfiddle,它可能更容易提供帮助
【解决方案3】:
  • 将整个“部分”包装在一个带有类(子类)的 div 中。
  • 从 div 中删除了 id “removeChild”,因为您不应拥有超过 1 个 id 与那个值。
  • 删除了内联的 onclick 事件并替换为 删除最靠近您单击的按钮的部分的事件。
  • 为移除按钮添加了一个类 (removeChild),以便我们可以使用该类轻松设置点击事件。

$(document).ready(function() {
       
        $("button[name='addDom']").click(function() {
            
            var domElement = $('<div class="child"><div class="row "><hr><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">First Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="first_name" placeholder="First Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Last Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="last_name" placeholder="Last Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Gender</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"> <option value="">Male</option><option value="">Female</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Date of Birth</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input type="date" class="form-control" id="exampleInputDOB1" placeholder="Date of Birth" required="required" style="width:124%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Class Coordinator (if applicable)</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="class_coordinator" placeholder="Class Coordinator Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div></div><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">School Currently Attending</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="school" placeholder="School Currently Attending" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Relation with child</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> <input name="relation" placeholder="Relation with child" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Types of soccercric</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"><option value="">Soccer</option><option value="">Cricket</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Child medical condition <br> <span style="font-size:10px">Please indicate any relevant medical conditions or allergies your child may have (not required if your child has no relevant medical issues)</span></label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="relation" placeholder="Child medical condition" class="form-control" type="text" required="required" style="width:200%"></div></div></div</div</div><br><br><br><button class="removeChild" class="btn btn-danger">Remove Child</button><hr></div>');
       
       $(this).after(domElement);
        });
       $(document).on('click','button.removeChild',function(){
         $(this).closest('div.child').remove();
       });
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button name="addDom" class="btn btn-warning"> Add Child</button>

【讨论】:

  • 出现了一个问题,只有一个输入字段的值通过了,但没有输入到数据库中。不是所有的输入值都通过了??如何解决这个问题
  • 通过在将输入字段添加到 dom 之前附加一个数字来更改输入字段的名称。至于如何保存到数据库,那要看你在服务器端使用的是什么。
【解决方案4】:

试试这个:

$('addBtn').click(function(){
    var $div = $('<div class="test">...</div>');
    $(this).after($div);
})

$('.removeBtn').click(function(){
    var $div = $('.test').last();
    $div.length && $div.remove();
})

【讨论】:

    【解决方案5】:

    您应该将表单包装到一个 div 中,然后像这样删除该 div:

    var id = 0;
    $(document).ready(function() {
           
            $("button[name='addDom']").click(function() {
                
                var domElement = $('<div class="rowItem"><div class="row" id="removechild"><hr><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">First Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="first_name" placeholder="First Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Last Name</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="last_name" placeholder="Last Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Gender</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"> <option value="">Male</option><option value="">Female</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Date of Birth</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input type="date" class="form-control" id="exampleInputDOB1" placeholder="Date of Birth" required="required" style="width:124%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Class Coordinator (if applicable)</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="class_coordinator" placeholder="Class Coordinator Name" class="form-control" type="text" required="required" style="width:200%"></div></div></div></div><div class="col-md-6 col-lg-6"><div class="form-group"><label class="col-md-4 control-label">School Currently Attending</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="school" placeholder="School Currently Attending" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Relation with child</label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> <input name="relation" placeholder="Relation with child" class="form-control" type="text" required="required" style="width:200%"></div></div></div><div class="form-group"><label class="col-md-4 control-label">Types of soccercric</label><div class="col-md-4 selectContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span><select name="gender" class="form-control selectpicker"><option value="">Soccer</option><option value="">Cricket</option></select></div></div></div><div class="form-group"><label class="col-md-4 control-label">Child medical condition <br> <span style="font-size:10px">Please indicate any relevant medical conditions or allergies your child may have (not required if your child has no relevant medical issues)</span></label><div class="col-md-4 inputGroupContainer"><div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span><input name="relation" placeholder="Child medical condition" class="form-control" type="text" required="required" style="width:200%"></div></div></div</div</div><br><br><br><button onclick="clearBox(this)" class="btn btn-danger">Remove Child</button><hr></div>');
                $(this).after(domElement);
            });
        
    });
    
     function clearBox(removeChild)
        {
            $(removeChild).parentsUntil('.rowItem').html('');
        }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button name="addDom" class="btn btn-warning"> Add Child</button>

    我正在使用 jQuery 的 parentsUntil 来获取包装 div 并删除 div 内的所有项目。

    【讨论】:

    • 感谢您通过@Robert 的解决方案解决我的问题
    • 出现了一个问题,只有一个输入字段的值通过了,但没有输入到数据库中。不是所有的输入值都通过了??如何解决@VinsensiusDanny
    • 您应该将每个输入表单元素的名称设为数组。例如&lt;input name='first_name'/&gt;&lt;input name='first_name[]'/&gt; 在服务器端,你应该像这样循环读取数组 answer
    • 你好@Vinsensius 这个答案帮助了我。现在我有新问题你能帮帮我吗?我想根据输入字段数据附加 div,例如,如果任何用户在输入字段中输入 5,我想附加 5 个 div,我尝试了一些,但我使用的向导表单无法设置 e.preventDefault :(
    【解决方案6】:

    正如我自己和 @guradio 在 cmets 中提到的,您的 ID 应该是唯一的。最简单的方法是拥有一个全局整数变量,该变量附加到每个元素 ID 然后递增:

    var elemIndex = 0;
    createElement(){
        var newId = "someElement" + elemIndex;
        var domElement = '<div id="'+ newId +'"'>...</div>';
    }
    

    然后您的删除按钮单击应调用clearBox 方法,填充唯一ID(看起来您的方法已开始支持此参数):

    clearBox(elementId){
        document.getElementById(elementId).innerHtml = "";
    }
    

    还有按钮(在构建元素字符串时会出现):

    var domElement = '...<button type="button" onclick="clearBox('+ newId +')">Clear</button>...';
    

    【讨论】:

      【解决方案7】:

      您可以通过使用 Jquery Traversing 来实现这一点。单击删除按钮可以删除相应的父 div。请参阅此 Jsfiddle 链接。

      $(document).on( "click", ".removeBtn", function() {
        $(this).parent().parent().parent().remove();
      });
      

      Fiddle

      【讨论】:

        猜你喜欢
        • 2011-09-23
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多