码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript事件委托

时间:2014-08-29 10:57:37      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   java   io   strong   

事件委托利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件
未使用事件委托之前:

bubuko.com,布布扣
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test javascript</title>
    <script type="text/javascript">
        window.onload = function() {
            var EventUtil = {
                addhandler:function(element,type,handler) {
                    if(element.addEventListenter) {
                        element.addEventListenter(type,handler,false);
                    } else if (element.attachEvent) {
                        element.attachEvent("on"+type,handler);
                    } else {
                        element["on"+type] = handler;                        
                    }
                },
                
                getEvent:function(event) {
                    return event?event:window.event; 
                },
                
                getTarget:function() {
                    return event.target || event.srcElement;
                },
                
                preventDefault:function() {
                    if(event.preventDefault) {
                        event.preventDefault();
                    } else {
                        event.returnValue = false;                        
                    }
                },
                
                stopPropagation:function() {
                    if(event.stopPropagation) {
                        event.stopPropagation();
                    } else {
                        event.cancelBuddle = true;
                    }
                },
                
                removehandler:function(element,type,handler) {
                    if(element.removeEventListenter) {
                        element.addEventListenter(type,handler,false);
                    } else if (element.detachEvent) {
                        element.detachEvent("on"+type,handler);
                    } else {
                        element["on"+type] = null;                        
                    }
                }
            }
            
            var item1 = document.getElementById("1");
            var item2 = document.getElementById("2");
            var item3 = document.getElementById("3");
            
            EventUtil.addhandler(item1,"click",function() {
                alert("item1 is clicked");
            });
            
            EventUtil.addhandler(item2,"click",function() {
                alert("item1 is clicked");
            });
            
            EventUtil.addhandler(item3,"click",function() {
                alert("item1 is clicked");
            });
        }
    </script>
    </head>
    <body>
        <ul id="myLinks">
            <li id="1">item1</li>
            <li id="2">item2</li>
            <li id="3">item3</li>
        </ul>
    </body>
</html>
bubuko.com,布布扣

使用事件委托后:

bubuko.com,布布扣
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test javascript</title>
    <script type="text/javascript">
        window.onload = function() {
            var EventUtil = {
                addhandler:function(element,type,handler) {
                    if(element.addEventListenter) {
                        element.addEventListenter(type,handler,false);
                    } else if (element.attachEvent) {
                        element.attachEvent("on"+type,handler);
                    } else {
                        element["on"+type] = handler;                        
                    }
                },
                
                getEvent:function(event) {
                    return event?event:window.event; 
                },
                
                getTarget:function() {
                    return event.target || event.srcElement;
                },
                
                preventDefault:function() {
                    if(event.preventDefault) {
                        event.preventDefault();
                    } else {
                        event.returnValue = false;                        
                    }
                },
                
                stopPropagation:function() {
                    if(event.stopPropagation) {
                        event.stopPropagation();
                    } else {
                        event.cancelBuddle = true;
                    }
                },
                
                removehandler:function(element,type,handler) {
                    if(element.removeEventListenter) {
                        element.addEventListenter(type,handler,false);
                    } else if (element.detachEvent) {
                        element.detachEvent("on"+type,handler);
                    } else {
                        element["on"+type] = null;                        
                    }
                }
            }
            
            var list = document.getElementById("myLinks");
            
            
            EventUtil.addhandler(list,"click",function(event) {
                event = EventUtil.getEvent(event);
                var target = EventUtil.getTarget(event);
                
                switch(target.id) {
                    case "1":
                        alert("item1 is clicked");
                        break;
                    case "2":
                        alert("item1 is clicked");
                        break;
                    case "3":
                        alert("item1 is clicked");
                        break;
                }
            });
            
        }
    </script>
    </head>
    <body>
        <ul id="myLinks">
            <li id="1">item1</li>
            <li id="2">item2</li>
            <li id="3">item3</li>
        </ul>
    </body>
</html>

Javascript事件委托

标签:style   blog   http   color   os   使用   java   io   strong   

原文地址:http://www.cnblogs.com/wt869054461/p/3944289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!