zoukankan      html  css  js  c++  java
  • 阻止事件冒泡和取消默认操作

    阻止事件冒泡和取消默认操作

     

    取消事件冒泡

    事件冒泡指当一个元素的事件被触发的时候,比如鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发,这个过程被称为事件冒泡。这个事件是从原始元素开始一直冒泡到DOM树的最上层。事件传播的3个阶段:捕获、冒泡、目标阶段。

    阻止事件冒泡:

    w3c的方法是event.stopPropagation(),IE则是使用event.cancelBubble = true;

    兼容性写法:

    复制代码
    1 var event = event || window.event;
    2 if(event && event.stopPropagation){
    3     event.stopPropagation();
    4 }
    5 else{
    6     event.cancelBubble = true;//ie678
    7 }
    复制代码

    :当前的DOM事件规范草案在Event对象上定义了另一个方法——stopImmediatePropagation(),类似stopPropagation(),这两个个方法都能阻挡事件流中事件冒泡,但stopImmediateProgation()在阻止事件冒泡的同时,也阻止了在相同对象上注册的任何其他事件处理程序的调用,使当前对象的次优级的所有监听都不执行了。

    取消默认操作

    取消默认操作:w3c的方法是event.preventDefault();IE则是使用event.returnValue = false;
    代码如下:
    复制代码
    1 function cancelBehavior(event){
    2     var event = event || window.event; 
    3     if(event.preventDefault) event.preventDefault(); 
    4     if(event.returnValue) event.returnValue = false; //IE
    5     return false; //处理使用对象属性注册的处理程序
    6 }
    复制代码

    注意:javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡!

  • 相关阅读:
    【css】容器撑满浏览器--- height:100%
    【实践】js六道有趣的题
    【Canvas】树冠
    asp.net上传Excel文件到服务端进行读取
    HttpContext.Current多线程调用
    abstract修饰符,具体类与抽象类的区别
    如何快速恢复MyEclipse的默认主题
    日历源代码
    for语句应用:乘法表
    Java的优先级
  • 原文地址:https://www.cnblogs.com/nlyangtong/p/9376406.html
Copyright © 2011-2022 走看看