js中简单阻止事件冒泡的方法

JavaScript 阻止事件冒泡,无使用其它插件来辅助,原生JS代码,考虑到浏览器的兼容性问题,这里对IE/火狐、Operating以及Chrome都有针对性的判断,代码如下:

 代码如下 复制代码

function cancelBubble(evt) {
 // 阻止事件冒泡
 if (window.event) {
  // Chrome,IE6,Opera
  window.event.cancelBubble = true;
 } else {
  // FireFox 3
  evt.stopPropagation();
 }
}

停止事件传播

事件对象还提供了一个.stopPropagation()方法,该方法可以完全阻止事件冒泡。与.target类似,这个方法也是一种纯JavaScript特性,但在跨浏览器的环境中则无法安全地使用 。不过,只要我们通过jQuery来注册所有的事件处理程序,就可以放心地使用这个方法。
下面,我们会删除刚才添加的检查语句event.target == this,并在按钮的单击处理程序中添加一些代码:
复制代码 代码如下:

 代码如下 复制代码
$(document).ready(function(){
 $('#switcher .button').click(funtion(event){
  //……
   event.stopPropagation();
  })
 })

  同以前一样,需要为用作单击处理程序的函数添加一个参数,以便访问事件对象。然后,通过简单地调用event.stopPropagation()就可以避免其他所有DOM元素响应这个事件。这样一来,单击按钮的事件会被按钮处理,而且只会被按钮处理。单击样式转换器的其他地方则可以折叠和扩展整个区域。

简单的实现了一下,整了半天,代码如下:

 代码如下 复制代码

<html>
 <head>
    <style type="text/css">
         #hide{
          width:75%;height:80px;background:skyblue;display:block;
         }
         .hander{cursor:pointer;}
         input{
          margin:5 0 0 900;
         }
    </style>

       <script>
        //不用window.onload也可以
         document.documentElement.onclick = function() {
       document.getElementById('hide').style.display = 'none'; 
      }

     //阻止冒泡事件方法
     function stopPropagation(e) { 
      e = e || window.event; 
      if(e.stopPropagation) { //W3C阻止冒泡方法 
          e.stopPropagation(); 
      } else { 
          e.cancelBubble = true; //IE阻止冒泡方法 
      } 
  }
  //方法必须要放在window.onload下
  window.onload = function(){
   document.getElementById("hide").onclick = function(e) {
        stopPropagation(e);
      }

      document.getElementById('btn_show').onclick = function(e) { 
          document.getElementById('hide').style.display = 'block'; 
          stopPropagation(e); 
   }
  }
  
      </script>
 </head>
 <body>
  <div id="hide" class="hander">click here nothing happen,you can click beside this area</div>
  <input type="button" id="btn_show" value="show" class="hander"/>
 </body>
</html>

时间: 2024-09-25 08:53:31

js中简单阻止事件冒泡的方法的相关文章

as3.0中如何阻止事件冒泡?

as3.0中的事件冒泡机制有时候会很烦人,比如一个Sprite(方便下文描述就命名为Container吧)把另一外Sprite(称为Child吧)做为子元素套进来以后,如果两个Sprite都注册了Mouse_Down事件,要想在Child上点击鼠标时系统只响应Child的Mouse_Down事件,默认是不行的,因为事件冒泡会让Container也响应Mouse_Down事件,示例代码: package { import flash.display.*; import flash.events.M

js中获取键盘事件的简单实现方法_javascript技巧

<script type="text/javascript" language=JavaScript charset="UTF-8"> document.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.arguments[0]; if(e && e.keyCode==27){ // 按 Esc //要做的事情 } if(

js阻止冒泡及jquery阻止事件冒泡示例介绍_javascript技巧

js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容. 复制代码 代码如下: function stopPro(evt){ var e = evt || window.event; //returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高.把这个属性设置为 fasle, //可以取消发生事件的源元素的默认动作. //window.event?e.returnValue = false:e.preventDefault(); window.ev

JQuery中阻止事件冒泡几种方式及其区别介绍

 JQuery中阻止事件冒泡方式有哪些?本文为大家准备了两种阻止事件冒泡的方式,两种方式的区别在于.return false 不仅阻止了事件往上冒泡,而且阻止了事件本身 JQuery 提供了两种方式来阻止事件冒泡.    方式一:event.stopPropagation();   代码如下: $("#div1").mousedown(function(event){  event.stopPropagation();  });    方式二:return false;  代码如下:

JQuery中阻止事件冒泡几种方式及其区别介绍_jquery

JQuery 提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); 复制代码 代码如下: $("#div1").mousedown(function(event){ event.stopPropagation(); }); 方式二:return false; 复制代码 代码如下: $("#div1").mousedown(function(event){ return false; }); 但是这两种方式是有区别的.return

利用JQuery阻止事件冒泡_jquery

冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点击里面的div我们希望处理这个div的事件,但是呢,我们不希望外层的div的事件也执行,这时候我们就要用到阻止冒泡. 通俗点来说吧,你在家里看电视,躲在自己的小房间,但是你不希望声音传到隔壁父母的耳朵里,这时候,你可能躲在被窝里,或者墙壁的隔音效果很好,阻隔声音可以理解为阻止冒泡. <style>

阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别

今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event.preventDefault()方法 这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 3.return false  : 这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件:写上此代

Jquery阻止事件冒泡 event.stopPropagation_jquery

描述: 防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数. version added: 1.0event.stopPropagation() 我们可以用 event.isPropagationStopped() 来确定这个方法是否(在那个事件对象上)调用过了. 这个方法对 trigger() 来自定义的事件同样有效. 注意,这不会阻止同一个元素上的其它事件处理函数的运行. Additional Notes: 自从.live()方法处理事件一旦传播到文档的顶部,live事件是

JS中捕获console.log()输出的方法_javascript技巧

本文实例讲述了JS中捕获console.log()输出的方法.分享给大家供大家参考.具体分析如下: 我们知道console.log()可以将信息输出到debugger中供开发者查看.但如果我们想要在JS中获取console.log()的输出结果呢?其实不难,先将原本的console.log保存起来,然后替换成另外一个实现即可.代码如下: var lastLog; console.oldLog = console.log; console.log = function(str) { console