这里我可以在点击时删除box100和box200但是在将它附加到列表后无法删除它。如何选择附加元素?
https://jsfiddle.net/uhmgj8ky/4/
html
<ul>
<li class='list'>remove box100</li>
<li class='list'>remove box200</li>
</ul>
<div class='box' box='box1'>add box1</div>
<div class='box' box='box2'>add box2</div>
<div class='box' box='box3'>add box3</div>
<div class='box' box='box4'>add box4</div>
<div class='box' box='box5'>add box5</div>
css
.box{
height:50px;
width:50px;
border:2px solid blue;
display: inline-block;
}
ul li{
height:50px;
width:50px;
border:2px solid blue;
display: inline-block;
margin-right: 1px;
}
jquery
$('.box').on('click', function(){
var txt = $(this).attr('box');
$('ul').append("<li class='list'>remove "+txt+"</li>");
});
$('.list').on('click', function(){
$(this).remove();
});
答案 0 :(得分:7)
您应该使用事件委派
事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。两个
on()
和
delegate()
函数允许我们执行事件委派。
添加了一个容器类
<ul>
<li class='list'>remove box100</li>
<li class='list'>remove box200</li>
</ul>
<div class="box-container">
<div class='box' box='box1'>add box1</div>
<div class='box' box='box2'>add box2</div>
<div class='box' box='box3'>add box3</div>
<div class='box' box='box4'>add box4</div>
<div class='box' box='box5'>add box5</div>
</div>
$('.box-container').on('click',".box", function(){
var txt = $(this).attr('box');
$('ul').append("<li class='list'>remove "+txt+"</li>");
});
$('ul').on('click','.list', function(){
$(this).remove();
});
<强>更新强> https://jsfiddle.net/uhmgj8ky/6/
有关活动委派的更多信息,请see video