如何访问附加元素并将其删除?

时间:2015-02-19 21:48:07

标签: javascript jquery html css

我已经为此做过相当多的研究,但我无法理解它。

有一个父div .container。其中有许多子div具有不同的文本。 .container外面有两个按钮。一个用于动态创建和附加具有特定文本的子元素。另一种方法是删除具有特定文本的子div。

第一次加载页面时一切正常但是当添加一个新的子div(假设有文本xyz)然后使用在textarea中输入xyz并按下删除按钮(编码为删除具有文本xyz的子div)他们没有工作。 示例HTML标记(可能有无数个子div)

  <div class="container>
  <div class="child1"></div>
  <div class="child2"></div>
  <div class="child3"></div>
  <div class="child4"></div>
  </div>
  <button class="AppendWithSomeText"></button>
  <button class="RemoveDivWithSomeMatchedText"></button>
  <textarea></textarea>

用于添加div的jquery

     var newdiv = = document.createElement('div');
     newdiv.className = 'child';
     $(".container").append(newdiv);
     $(".container").find(".child").html(textfromtextarea);
     // here text from text area is a string stored from user input in             textarea

jQuery for remove按钮

    $('.container>div:contains("'+textfromtextarea+'")').remove();
    //works only first time

2 个答案:

答案 0 :(得分:2)

http://codepen.io/dustinpoissant/pen/VYXGwB

<强> HTML

<input type='text' id='input' />
<button onclick='addItem()'>Add</button>
<button onclick='removeItem()'>Remove</button>
<br><br>
<div id='box'></div>

<强>的JavaScript

function addItem(){
  $("#box").append("<span>"+$("#input").val();+"</span>");
}
function removeItem(){
  var text = $("#input").val();
  $("#box span").each(function(i, el){
    if($(el).text()==text) $(el).remove();
  });
}

答案 1 :(得分:0)

为了保持结构的一致性,我添加了类型为child-number的类。

我希望这是你所期望的。

$(document).ready(function() {
  $(".AppendWithSomeText").on("click", function() {

    $(".container").append("<div class=child" + ($("[class^='child']").length + 1) + ">" + $(".content").val() + "</div>")
  })
  $(".RemoveDivWithSomeMatchedText").on("click", function() {

    $('.container>div:contains("' + $(".content").val() + '")').remove();
  })

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="container">
  <div class="child1">somecontent</div>
  <div class="child2">somecontent</div>
  <div class="child3">somecontent</div>
  <div class="child4">somecontent</div>
</div>
<button class="AppendWithSomeText">add</button>
<button class="RemoveDivWithSomeMatchedText">remove</button>
<textarea class="content"></textarea>