事件委托的二级菜单编写

一、什么是事件委托?微笑

简单的说,就是把dom事件委托给别人去触发,去做,一般利用冒泡把事件加到父元素的身上,让父元素去执行触发效果。

优点是 : 提高运行性能,可以大量的节约内存,减少事件注册;当元素本身有增删改查的时候  ,如果元素不存在了,那么也不用对元素进行事件绑定了。


二、简单的看下例子微笑

<ul id="ul">
<li>菜单1
<div>

</div>
</li>
<li>菜单2
<div>

</div>
</li>
<li>菜单3
<div>

</div>
</li>
</ul>


这个是个二级菜单;

开始我们让所有的div隐藏,然后给他ul 一个事件委托 去改变每个li 下面的div出现隐藏,大量减少了事件;


下面是js代码:

<script>

var ul = document.getElementById("ul");
var oLi = ul.getElementsByTagName('li');

ul.addEventListener('mouseover',function(e){

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

var index;
for(var i = 0;i<oLi.length;i++){


if(e.target === oLi[i]){
index = i;
console.log(index);


var div = oLi[i].getElementsByTagName("div")[0];


div.style.display='block';


}




}




}
})


ul.addEventListener('mouseout',function(e){

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

var index;
for(var i = 0;i<oLi.length;i++){


if(e.target === oLi[i]){
index = i;
console.log(index);


var div = oLi[i].getElementsByTagName("div")[0];


div.style.display='none';


}




}


}
})




</script>


这样一个简单的事件委托版的二级菜单就实现了。微笑

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值