什么是事件委托:通俗的講调煎,事件就是onclick,onmouseover己肮,onmouseout,等就是事件悲关,委托呢谎僻,就是讓別人來(lái)做,這個(gè)事件本來(lái)是加在某些元素上的寓辱,然而你卻加到別人身上來(lái)做艘绍,完成這個(gè)事件。
也就是:利用冒泡的原理秫筏,把事件加到父級(jí)上诱鞠,觸發(fā)執(zhí)行效果。
好處呢:1这敬,提高性能航夺。
好處2,新添加的元素還會(huì)有之前的事件崔涂。
這里要用到事件源:event 對(duì)象阳掐,事件源,不管在哪個(gè)事件中,只要你操作的那個(gè)元素就是事件源缭保。
ie:window.event.srcElement
標(biāo)準(zhǔn)下:event.target
nodeName:找到元素的標(biāo)簽名
下面是簡(jiǎn)單實(shí)例:
<style>
li{
width: 80px;
height: 40px;
background: #eee;
margin-top: 20px;
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
// 獲取已存在所有l(wèi)i元素
var lis = document.querySelectorAll('li');
// 獲取li父級(jí)元素 (始終存在的元素);
var ul = document.querySelector('ul');
// 給始終存在的元素(也就是li的父級(jí)元素)添加點(diǎn)擊事件
ul.onclick = function(event){
// 通過(guò)事件去觸發(fā)target(目標(biāo)元素)
var target = event.target;
// 判斷目標(biāo)元素是否等于我們想要添加事件的元素汛闸,是就執(zhí)行
if(target.nodeName == 'LI'){
alert(target.innerHTML);
}
}
// 通過(guò)DOM節(jié)點(diǎn)新添加的元素也可以觸發(fā)ul的target
newLi = document.createElement('li');
newLi.innerHTML = '6';
ul.appendChild(newLi);
newLi = document.createElement('li');
newLi.innerHTML = '7';
ul.appendChild(newLi);
</script>
</body>