本节的知识需要DOM事件监听器、事件流、事件触发元素等基础。
事件委托就是利用事件冒泡原理,把处理任务委托给父元素或者祖先元素(通常用父元素),我们通过目标对象来判断事件源,并执行事件处理。
示例1
<body>
<ul id="ul">
<li><a>油条</a></li>
<li><a>肉包</a></li>
<li><a>米饺</a></li>
<li><a>鱼粉</a></li>
</ul>
<script>
var elul=document.getElementById("ul");
//无需监控所有元素事件,利用事件冒泡原理,监控他的上级元素即可。
elul.addEventListener('click',G,false);
function G(e) {
var ev = e || windows.event;
//e.srcRlement 是IE特有的
//e.target 是dom标准
var target= ev.target || ev.srcElement;
// target.nodeName 获取元素
if(target.nodeName.toLowerCase() ==="a"){
alert(target.innerHTML);
}
}
</script>
</body>
示例2
<body>
<ul id="ul">
<li>油条</li>
<li>肉包</li>
<li>米饺</li>
<li><a>鱼粉</a></li>
</ul>
<script>
var elul = document.getElementById("ul");
//无需监控所有元素事件,利用事件冒泡原理,监控他的上级元素即可。
elul.addEventListener("click", getEvent, false)
function getEvent(e) {
var ev = e || window.event;
//e.srcElement 是IE特有的
//e.target 是dom标准
var target = ev.target || ev.srcElement;
// target.nodeName 获取元素。获取的元素是大写的,转换成小写
if (target.nodeName.toLowerCase() === "a") {
alert(target.innerHTML);
}
if (target.nodeName.toLowerCase() === "li") {
alert(target.innerHTML);
}
}
</script>
</body>