zoukankan      html  css  js  c++  java
  • 阻止事件

    一。取消浏览器对事件的默认行为(响应)(比如标签的跳转等)并停止事件的继续传播。


        function stopEvent (evt) {
            var evt = evt || window.event;
            if (evt.preventDefault) {
                evt.preventDefault();
                evt.stopPropagation();
            } else {
                evt.returnValue = false;//IE
                evt.cancelBubble = true;//IE
            }
        }
     
    二。只阻止事件继续传播(不取消默认行为)即停止事件冒泡
        
        function stopEvent (evt) {
            var evt = evt || window.event;
            if (evt.stopPropagation) {
                evt.stopPropagation();
            } else {
                evt.cancelBubble = true;//IE
            }
        }
     
    三。只取消默认行为(不阻止事件的继续传播)
     
        function stopEvent (evt) {
            var evt = evt || window.event;
            if (evt.preventDefault) {
                evt.preventDefault();//DOM
            } else {
                evt.returnValue = false;//IE
            }
        }
     
    例:
       var EX = {
            //添加事件
            addEvent:function(k,v){ //k是一个事件名;v是一个函数
                var me = this;
                if(me.addEventListener){ //兼容IE8以上
                    me.addEventListener(k,v,false); //k是一个事件名;v是一个函数;false表示事件冒泡执行
                }else if(me.attachEvent){ //兼容处理ie8及以下
                    me.attachEvent('on'+k,v); //on+k事件名,如click,v 一个函数,此处的格式为 me.attachEvent('onclick',function)
                }else{
                    me['on'+k] = v; //兼容处理好了后,假设me[onclick] = function = me.onclick=function;
                }
            },
            //移除事件
            removeEvent:function(k,v){ //k是一个事件名;v是一个函数
                var me = this;
                if(me.removeEventListener){  //对应addEventListener()方法
                    me.removeEventListener(k,v,false);
                }else if(me.detachEvent){ //对应attachEvent()方法
                    me.detachEvent('on'+k,v);
                }else{
                    me['on'+k] = null; //空对象指针
                }
            },
            //停止事件,取消事件冒泡传递
            stop:function(evt){
                evt = evt||window.event;  
                //stopPropagation()方法,阻止分派到其他节点
                evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
            }
        }
  • 相关阅读:
    jQuery基础---filter()和find()
    js数组去重的4个方法
    各种排序算法的分析及java实现
    js三种对话框
    js数组与字符串的相互转换
    java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
    Django REST framework视图
    Django REST framework序列化
    Django REST framework简介
    Django REST framework认证、权限、频率
  • 原文地址:https://www.cnblogs.com/Byme/p/5732053.html
Copyright © 2011-2022 走看看