javascript 事件冒泡 和 事件委托

js里的事件:

        鼠标键盘事件:onclick、ondbclick、onmousedown、onmouseup、onmouseover、onmousemove、onmouseout、

                                 onkeypress、onkeydown、onkeyup;

        页面事件:onload、onunload、onresize、onerror、onabort;

        表单相关事件:onblur、onchange、onfocus、onreset、onsubmit;

1、事件冒泡:

        单击绿色的div,也会触发红色div的click处理函数 。先捕获绿色div(最内层)的click事件,再逐级往上捕获父级的click事件,直到被阻止冒泡或捕获到“最父级”元素。

        使用  event.stopPropagation() 阻止事件冒泡。

2、事件委托:

        事件冒泡机制对于dom元素绑定事件处理函数 不容易管理,得对每个事件函数阻止冒泡。

        如果ul里面有100个li,需要对每个li添加click函数。js绑定的dom事件函数越多,dom操作越多,界面交互就越多,界面就越不流畅。

         js的event对象里面,有三个属性 event.target(chrome)、event.srcElement(IE,等价于chrome的target属性),event.currentTarget,event函数里的this表示绑定事件的dom元素,currentTarget等价于this,target和srcElement表示触发事件函数的dom元素(并不是只有绑定事件处理函数的dom元素才会触发事件函数,如果绿色div未绑定click函数,单击绿色div,同样会触发红色div的click函数)。

        事件委托,也叫做事件代理。在“事件冒泡”部分说的是怎么阻止事件冒泡,“事件委托”说的是怎么利用事件冒泡。

         想要的功能是5个li有相应的click事件处理函数。并不必给li添加事件处理函数,而是给ul添加click函数,在ul的click函数中,判断event.target是哪个li,然后再执行相应的函数。相关函数还是要定义的,只是没有直接把函数绑定到li的click事件。li把事件处理委托给了ul,ul代理了li。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值