zoukankan      html  css  js  c++  java
  • Javascript事件委托

     

     

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

    复制代码
    <!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>
    复制代码

    使用事件委托后:

    复制代码
    <!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>
  • 相关阅读:
    js鼠标右键菜单
    js变量作用域好玩的东东
    清除浮动
    http通信示例Httpclient和HttpServer
    sql复杂案例
    微信小程序(小游戏)后台开发
    自动授时同步NTP时钟之NTP农历源代码算法立显电子技术部宣
    NTP同步时钟系统的实现及局域网授时方法
    modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享
    带掉电记忆功能的LED时钟代码分享
  • 原文地址:https://www.cnblogs.com/wt869054461/p/3944289.html
Copyright © 2011-2022 走看看