代理事件好处多,如何实现:
</body>
<div class="aa">
<div class="bb">
<div class="cc">
</div>
</div>
</div>
</body>
<script>
$('body').on('click', 'div.aa', function(){
console.log('del')
})
</script>
效果是 点击 div.aa 里面任意的子盒子,都会输出 ‘del’,并由其独特的好处。
流程如下:对照 src/event.js
- 425行
if ( matchedSelectors[ sel ] ) {
matchedHandlers.push( handleObj );
}
只有 特定的元素(如这里的div.aa) 才会,捆绑上 handleObj。
2.384行
cur = event.target;
用户实际 触发的元素(如在这里,点击div.bb)
3.接下来就是 双层遍历赋值,双层遍历执行