一、什么叫事件委托(事件代理)
事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。通俗讲,就是有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收【故事借鉴于大牛】。
二、为什么要用事件委托
一般来说,Dom需要有事件处理程序,我们都会直接给它设事件处理程序就行,那如果是很多的Dom需要添加事件处理呢?这个时候就需要用到事件委托,给它们的父元素设置一个事件处理程序,利用冒泡的原理,把事件加到父级上,触发执行效果。
三、事件委托的原理
事件委托是利用事件的冒泡原理来实现的,就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,有这样一个机制,那么我们给最外面的div加点击事件,那么里面的ul,li,a做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托它们父级代为执行事件。【借鉴】
四、事件委托的实现
本案例是通过事件委托来点击按钮的加减来改变input的值(常用于购物网站中购物车页面商品数量的加减)
// HTML代码
<div class="js_button">