为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS 事件委托操作ul li标签的问题

关于JS 事件委托操作ul li标签的问题

holdtom 2018-11-09 14:15:03
先说一下我想要实现的功能,就是在一个ul 里面 点击某个li标签 就移除当前点击的li。但是搞来搞去就是没能实现我想要的效果。现在的问题如下怎么用更直接的方法取得当前点击的li下标,for循环取下标是百度淘来的。移除是可以用了,但是它不是按我点击的li移除 比如我点击2 它会删除3 or 4 不知道是不是if(e.target == children[i])这里判断不对点击一次没效果,要点第二次才执行removeChild。HTML结构<ul id="box">    <li id="one" class="oneclass" data="2017">0</li>    <li>1</li>    <li>2</li>    <li>3</li>    <li>4</li></ul>JS代码document.getElementById("box").addEventListener("click",function(e) {    if(e.target && e.target.nodeName == "LI") {        var children = this.children;    //获取ul里面的所有li元素集合        for(var i=0;i<children.length;i++){            if(e.target == children[i]) { //对比目标元素和li集合元素                //alert("目标元素的下标为:" + i);    //输出目标元素的下标              document.getElementById(e.target.parentNode.id).removeChild(document.getElementById(e.target.parentNode.id).childNodes[i]);                return;            }        }    }});
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

document.querySelector('#box').addEventListener('click',function(e){

    if(e.target.nodeName=="LI"){

        e.target.parentNode.removeChild(e.target);

    }

});


查看完整回答
反对 回复 2018-12-27
  • 1 回答
  • 0 关注
  • 1603 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信