无法将类添加到动态创建的元素中

rnD*_*sto 5 html javascript css jquery append

我想用jquery创建基本的删除和删除.但我有一个jquery追加问题,为什么我单击追加时无法在新的<li>上激活addClass.

当我点击<li>时,它将在<li>上添加活动类,然后我想删除<li>让类激活

任何人都可以帮助我为什么会这样

$(document).ready(function(){
  
  var list=$('ul.appendWrap > li').length;
  
  $('.btn_append').click(function(){
      $('ul.appendWrap').append('<li>new</li>');   
  });
  
  $('.btn_remove').click(function(){
    $('li.active').remove();
  });
  
  $("ul.appendWrap li").click(function(){
    $(this).addClass('active');
  })
  
});
Run Code Online (Sandbox Code Playgroud)
li, a {
  cursor: pointer;
}

.active {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="appendWrap">
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<a class="btn_append">append</a>
<a class="btn_remove">remove</a>
Run Code Online (Sandbox Code Playgroud)

Mih*_*nut 10

您必须event为添加的元素使用委托dynamically.

您应该click使用.on()方法绑定事件处理程序.

事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加.

了解更多关于event delegation 这里.

$(document).ready(function(){
  
  var list=$('ul.appendWrap > li').length;
  
  $('.btn_append').click(function(){
      $('ul.appendWrap').append('<li>new</li>');   
  });
  
  $('.btn_remove').click(function(){
    $('li.active').remove();
  });
  
  $(document).on("click","ul.appendWrap li",function(){
    $(this).addClass('active');
  })
  
});
Run Code Online (Sandbox Code Playgroud)
li, a {
  cursor: pointer;
}

.active {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="appendWrap">
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<a class="btn_append">append</a>
<a class="btn_remove">remove</a>
Run Code Online (Sandbox Code Playgroud)