【问题标题】:Dynamically append divs and remove the same div in jquery动态追加 div 并在 jquery 中删除相同的 div
【发布时间】:2015-03-19 02:50:16
【问题描述】:

我在某个地方卡住了。真诚期待您的帮助。

我正在尝试使用“id”动态附加 div,并在单击按钮时删除具有相同“id”的相同 div。一切正常。当我单击相关按钮附加 div 时,div 会附加动态 id。问题在于单击附加 div 内的“关闭”按钮删除相同的 div。

假设我附加的 div 是“Order2”和“Order3”。当我单击“Order3”附加 div 内的“关闭”按钮时,它正在删除相同的 div 即“Order3”,但如果我单击“Order2” div 内的“关闭”按钮,则在删除“Order3” div 之前所有附加的 div 都被删除。这不是预期的。预计当我单击“Order2”div 内的“Close”按钮时,它将删除“Order2”div。

我知道我犯了愚蠢的错误。请帮我整理一下。提前致谢 我的js代码是:

$(document).ready(function(){
  function addallTit() {
   var container = $('#addTitles');
   var inn = container.find('.app-div');

   var $id = inn.length+1;
   $id++;
$(container).append('<div id="app'+$id+'"><div class="col-md-12"><div class="app-div"><div class="closed-btn pull-right"><a href="javascript:"><i class="fa fa-times "></i></a></div> <div class="input-group" > <span id="sizing-addon2" class="input-group-addon">Order # '+ $id +'</span><input type="text" placeholder=""  class="form-control">  </div></div></div></div>');

$('.closed-btn ').click(function(e){
     e.preventDefault();
    $('#app'+$id).remove();


 });

};


$('#titlesAdds').click(function() {
    addallTit();
    });



});

这里是链接: Fiddle

【问题讨论】:

    标签: javascript jquery append


    【解决方案1】:

    我正在修改 Norlihazmey Ghazali 的回答。但此修改会正确删除您附加的 div 的所有组件。

    $('#addTitles').on('click','.closed-btn',function(e){
    
       e.preventDefault();
    
       var par = $(this).closest($("[id^=app]"));
    
       $(par).remove();
    
    }); 
    

    【讨论】:

    • 感谢@vivin 成功了。根据我的申请 .closest() 是最好的。再次感谢
    【解决方案2】:

    只需更改关闭事件,因为它是动态元素。

    container.on('click','.closed-btn',function(e){
             e.preventDefault();
             $('#app'+$id).remove();
    
     });
    

    【讨论】:

      【解决方案3】:

      您的一个问题是,您想要删除动态添加的内容。如果要删除添加的元素,请使用.on 方法并将元素的父元素作为选择器。然后第二个问题是,jquery 不知道您要删除哪个元素。这个想法是,找到当前关闭链接的父级,然后删除。只需将您的代码更改为:

      $('#addTitles').on('click','.closed-btn',function(e){
         e.preventDefault();
         var par = $(this).parent();
         $(par).remove();
      
      });  
      

      【讨论】:

      • 虽然您的回答从浏览器中直观地删除了 div,但如果您打开开发人员工具的元素部分,主 div 仍然存在。您只是删除了 div 的一部分,而不是主要父级。
      • @VivinBangera 这取决于他,在这种情况下,我的意思是 amitabhaghosh197。他的问题是删除当前单击的关闭链接及其父级。
      • 我明白你的意思。这个答案也有效。但唯一的问题是它会将不需要的 html 保留在 DOM 中。我对您的代码进行了修改并在下面发布,它删除了 DOM 中与添加的 div 相关的所有内容。
      • @VivinBangera 是的,太好了!!
      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多