移除dom节点

<ul id="list">
    <li>001<a href="">删除</a></li>
    <li>002<a href="">删除</a></li>
    <li>003<a href="">删除</a></li>
</ul>

//如上,点击删除删除对应的li,
document.getElementById("list").addEventListener("click",function(e){
    //就在这里卡住了,不知道怎么获取到对应li;
},false);
阅读 3.6k
2 个回答

通过事件委托,e.target获取真正触发事件的元素,而e.currentTarget是定义事件监听的元素,也就是ul

e.target获取的是 <a>,判断是否是<a>,如果是<a>,移除<a>parentNode(li)即可。

因为你是用的<a> 触发点击,所以需要使用e.preventDefault() 阻止默认事件,否则会跳转

    var list =  document.getElementById("list");
    list.addEventListener("click",function(e){
        //就在这里卡住了,不知道怎么获取到对应li;
        e.preventDefault();
        var target = e.target||e.srcElement;
        target.nodeName.toLowerCase() === 'a' ? list.removeChild(target.parentNode) : false;
    },false);  
<ul id="list">
    <li>001<a href="">删除</a></li>
    <li>002<a href="">删除</a></li>
    <li>003<a href="">删除</a></li>
</ul>

//如上,点击删除删除对应的li,
document.getElementById("list").addEventListener("click",function(e){
    var target = e.target;
    if(target.nodeName.toLowerCase() !== 'li') return; // 如果点击的不是li则不做处理
    
    target.parentNode.removeChild( target );
},false);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题