JS事件代理就是通过给父级元素(例如:ul,tr等等)绑定事件,不给子级元素(例如:li,td等等)绑定事件,然后当点击子级元素时,通过事件冒泡机制在其绑定的父元素上触发事件处理函数,主要目的是为了提升性能,因为我不用给每个子级元素绑定事件,只给父级元素绑定一次就好了,在原生js里面就是通过event对象的taget属性实现。
var ul=document.querySelector("ul");
ul.onclick=function(e){
//e这里指event对象
var target=e.target=e.target||e.srcElement;//target 获取触发事件的目标(li)
if(target.nodeName.toLowerCase()==' li '){
//目标(li)节点名转小写字母,不转换的话是大写字母
alert(target.innerHTML)
}
}
jq方式实现相对而言简单
$('ul').on('click','li',function(){
//事件逻辑
})
其中第二个参数指的是触发事件的具体目标,特别是给动态添加的元素添加事件。