js事件委托

原理

利用js的事件冒泡原理,把onclick,onmouseenter等事件绑定到父节点上,这样做的好处是:

 1.避免多次循环,例如给ul的li增加样式;

 2.可以给动态增加的节点绑定事件,例如ul中新增的li也需要有事件;

 3.代码简洁,便于维护;

 4.复用函数对象,优化性能;

 

 原生js实现

//跨浏览器绑定事件
function addEventHandler(ele,evt,handler){
if(ele.addEventListener){
ele.addEventListener(evt,handler,false);
}else if(ele.attachEvent){
ele.attachEvent("on"+evt,handler);
}else{
ele["on"+evt] = handler;
}
}

//事件委托;
function delegate(parent,child,action,callback){
	addEventHandler(parent,action,function(e){
var e = e||window.event;
var target = e.target || e.srcElement; if(child==e.target.tagName.toLowerCase()){ console.log("Click Event"); callback(); } }) }
delegate(ul,'li','click',function(){});

 

  这里要注意ie 和 w3c的事件源不同;

 

转载于:https://www.cnblogs.com/summer323/p/5341783.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值