事件委托
事件委托 : 将某个事件委托给另一个元素( 委托给父级元素 这里的父级可以是直接父元素 也可以是爷爷 曾爷爷... )
事件委托好处:
1、为某些元素的父级元素添加事件,提高程序的执行效率
2、动态创建的元素 添加事件时,可以将事件添加在动态创建的函数体外面
委托实现 :
父级元素.onclick = function(){ ... }
父级元素.addEventListener("事件",function(){ ... })
获取事件源兼容:
target = e.target || e.srcElement;
不是所有的事件都可以实现委托,不能实现冒泡的事件就不能实现委托
委托实现机制 :
利用事件冒泡或捕获机制
不是所有的事件都能够实现事件委托 onload onfocus onblur
委托实现方式:
第一种 : 父级元素.事件 = function(){}
第二种 : 父级元素.addEventListener("",function(){ })
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div>
<ul>
<li>孩子多个1</li>
<li>孩子多个2</li>
<li>孩子多个3</li>
<li>孩子多个4</li>
<li>孩子多个5</li>
<li>孩子多个6</li>
<li>孩子多个7</li>
<li>孩子多个8</li>
<li>孩子多个9</li>
<li>孩子多个10</li>
<li>孩子多个11</li>
<li>孩子多个12</li>
<li>孩子多个13</li>
<li>孩子多个14</li>
<li>孩子多个15</li>
<li>孩子多个16</li>
<li>孩子多个17</li>
<li>孩子多个18</li>
<li>孩子多个19</li>
<li>孩子多个20</li>
<p>孩子多个20</p>
</ul>
</div>
</body>
</html>
<script>
//事件委托 : 将事件委托给其他元素
//当为多个同类的元素添加相同事件时 可以将事件添加到这些元素的父级元素上
//为所有的li添加单击事件(事件源是li)
var oUl = document.querySelector("ul");
oUl.onclick = function(e){
var e = e || event;
//重新获取事件源
var target = e.target || e.srcElement;
//alert( target.tagName );
if( target.tagName.toLowerCase() == "li" ){
target.style.backgroundColor = "pink";
}
}
/*oUl.addEventListener( "click" , function(e){
var e = e || event;
//重新获取事件源
var target = e.target || e.srcElement;
alert( target.tagName );
},false )*/
</script>

浙公网安备 33010602011771号