事件委托
概念
- [ ] 利用事件的冒泡传播机制
- (触发当前元素行为,其父级所有元素的该行为都触发)
何时用怎么用
[ ] 一个容器里多个元素都要绑定同一事件,就只需给最外层绑定该事件即可
[ ] 方法执行时,通过事件源(e.target)区分进行不同的操作
购物车案例
布局
图171234<div id="box"> <Span>span购物车</span> <div id="mark" style="display:none">mark购物清单</div></div>
功能
(多个元素都要绑定同一点击事件)
- [ ] 点击box或者span打开mark
- [ ] 点击mark没反应
- [ ] 点击body则mark收回
注意点
- [ ] style=”display:none”必须在行内元素里才能进行下面if判断
|
|
- [ ] 利用时间委托要注意根据事件源区分不同操作12345678910111213141516171819202122document.body.onclick=function(e){e=e||window.event;e.target=e.target||e.srcElement;// 如果点击的是box或者box下的spanif(e.target.id.toLowerCase()==="box"||(e.target.tagName.toLowerCase()==="span"&& e.target.parentNode.id==="box")){if(mark.style.display=="none"){mark.style.display="block";}else{mark.style.display="none";}return;}//如果事件源是mark不进行任何操作if(e.target.id.toLowerCase()==="mark"){return;}//如果事件源是body则mark收回mark.style.display="none";}
- [ ] 利用时间委托要注意根据事件源区分不同操作
完整代码
|
|