利用JQuery阻止事件冒泡

 更新时间:2016年12月01日 17:07:47   作者:川哥哥  
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。本文主要介绍JQuery阻止事件冒泡的实例解析。需要的朋友来看下吧

冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。

我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点击里面的div我们希望处理这个div的事件,但是呢,我们不希望外层的div的事件也执行,这时候我们就要用到阻止冒泡。

通俗点来说吧,你在家里看电视,躲在自己的小房间,但是你不希望声音传到隔壁父母的耳朵里,这时候,你可能躲在被窝里,或者墙壁的隔音效果很好,阻隔声音可以理解为阻止冒泡。

<style>
 #content{
  width: 140px;
  border: 1px solid blue;
 }
 #msg{
  width: 100px;
  height: 100px;
  margin: 20px;
  border: 1px solid red;
 }
</style>
  <body>
  <div id="content">
 外层div
 <div id="msg">
  内层div
 </div>
 </div>
  </body>

显示结果

对应的jQuery代码如下:

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
 // 为内层div绑定click事件
 $("#msg").click(function(){
  alert("我是小div");
 });
 // 为外层div元素绑定click事件
 $("#content").click(function(){
  alert("我是大div");
 });
 // 为body元素绑定click事件
 $("body").click(function(){
  alert("我是body");
 });
 });
 </script>

    当点击小div时,会触发大div与body 的点击事件。点击大div时会触发body的点击事件。

如何防止这种冒泡事件发生呢?

修改如下:

event.stopPropagation(); // 阻止事件冒泡

有时候点击提交按钮会有一些默认事件。比如跳转到别的界面。但是如果没有通过验证的话,就不应该跳转。这时候可以通过设置event.preventDefault(); //阻止默认行为 ( 表单提交 )。

html部分

<body>
 <form action="test.html">
  用户名:<input type="text" id="username" />
  <br/>
  <input type="submit" value="提交" id="sub"/>
 </form>
 </body>

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
  $("#sub").click(function(event){
  //获取元素的值,val() 方法返回或设置被选元素的值。
  var username = $("#username").val(); 
  //判断值是否为空
  if(username==""){ 
   //提示信息
   //alert("文本框的值不能为空");
   $("#msg").html("<p>文本框的值不能为空.</p>"); 
   //阻止默认行为 ( 表单提交 )
   event.preventDefault(); 
  }
  });
 });
 </script>

//阻止默认行为 ( 表单提交 )
                    event.preventDefault(); 
还有一种防止默认行为的方法就是return false。效果一样。

代码如下:

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
  $("#sub").click(function(event){
  //获取元素的值,val() 方法返回或设置被选元素的值。
  var username = $("#username").val(); 
  //判断值是否为空
  if(username==""){ 
   //提示信息
   //alert("文本框的值不能为空");
   $("#msg").html("<p>文本框的值不能为空.</p>"); 
   //阻止默认行为 ( 表单提交 )
   //event.preventDefault(); 
   return false;
  }
  });
 });
 </script>

同理,上面的冒泡事件也可以通过return false来处理。

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
 // 为内层div绑定click事件
 $("#msg").click(function(event){
  alert("我是小div");
  //event.stopPropagation(); // 阻止事件冒泡
  return false;
 });
 // 为外层div元素绑定click事件
 $("#content").click(function(event){
  alert("我是大div");
  //event.stopPropagation(); // 阻止事件冒泡
   return false;
 });
 // 为body元素绑定click事件
 $("body").click(function(event){
  alert("我是body");
  //event.stopPropagation(); // 阻止事件冒泡
  return false;
 });
 });

以上就是本文的全部内容,希望对大家有所帮助,同时也希望多多支持脚本之家!

相关文章

  • jQuery 1.4 15个你应该知道的新特性(译)

    jQuery 1.4 15个你应该知道的新特性(译)

    jQuery 1.4 最近刚刚发布. 这个版本可不是一个简单的改进,它不仅包含了很多新的特性,还改进了很多功能, 更在性能优化方面下了很大功夫, 本文将对这些新的特性和增强的部分进行讨论,希望能对你有所帮助.
    2010-01-01
  • jquery无缝图片轮播组件封装

    jquery无缝图片轮播组件封装

    这篇文章主要为大家详细介绍了jquery无缝图片轮播组件封装,支持自动轮播,手动轮播,无缝衔接,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • jQuery源码解读之addClass()方法分析

    jQuery源码解读之addClass()方法分析

    这篇文章主要介绍了jQuery源码解读之addClass()方法,注释形式较为详细的分析了addClass()方法的实现技巧与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • jQuery网页版打砖块小游戏源码分享

    jQuery网页版打砖块小游戏源码分享

    这篇文章主要展示了jQuery网页版打砖块小游戏源码,大家都一定玩过打砖块这款小游戏,今天我们不仅要玩转它,还要实现打砖块小游戏,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • jQuery中get方法用法分析

    jQuery中get方法用法分析

    这篇文章主要介绍了jQuery中get方法用法,结合实例形式分析了jQuery的ajax交互中get方法的功能、参数、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • jquery api参考 visualjquery 中国线路 速度快

    jquery api参考 visualjquery 中国线路 速度快

    jquery api参考 visualjquery 中国线路 速度快...
    2007-11-11
  • jQuery遍历json的方法(推荐)

    jQuery遍历json的方法(推荐)

    这篇文章主要介绍了jQuery遍历json的方法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • JQuery判断子iframe何时加载完成解决方案

    JQuery判断子iframe何时加载完成解决方案

    需要知道iframe何时加载完成,用JQuery很简单就能实现,具体如下,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • jquery使用淘宝接口跨域查询手机号码归属地实例

    jquery使用淘宝接口跨域查询手机号码归属地实例

    这篇文章主要介绍了jquery使用淘宝接口跨域查询手机号码归属地的方法,大家参考使用吧
    2013-11-11
  • jQuery晃动层特效实现方法

    jQuery晃动层特效实现方法

    这篇文章主要介绍了jQuery晃动层特效实现方法,实例分析了animate方法与css样式的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论