代码改变世界

事件委托

2012-02-17 17:58  边缘er  阅读(221)  评论(0编辑  收藏  举报

用事件委托写方法在很多时候会提高性能。比如有个ul中有3个li,点击不同的li调用不同的方法,这就可以通过"事件冒泡"(关于事件冒泡)来构建事件委托了。说简单点,就是只写一个方法在ul上,li则冒泡到ul,通过判断不同的事件目标对象(真正点击的是li,也就是目标),执行不同的操作。

<ul id="weituo">
<li id="li1">第一个li</li>
<li id="li2">第二个li</li>
<li id="li3">第三个li</li>
</ul>
<script type="text/javascript">
function getEvent(event){
return event ? event : window.event;
}
function getTarget(event){
return event.target || event.srcElement;
}
var oUl = document.getElementById('weituo');
oUl.onclick
= function(event){
event
= getEvent(event);
var target = getTarget(event);
switch (target.id){
case 'li1':
alert(
'点击了第一个li');
break;
case 'li2':
alert(
'点击了第二个li');
break;
case 'li3':
alert(
'点击了第三个li');
break;
default :
alert(
'没有了');
break;
}
}
</script>