jQuery阻止事件冒泡具体实现


Posted in Javascript onOctober 11, 2013

下面是html代码部分:

<body>
<div id="content">
    外层div元素
    <span>内层span元素</span>
    外层div元素
</div>
<div id="msg"></div>
</body>

对应的jQuery代码如下:

<script type="text/javascript">
$(function(){
    // 为span元素绑定click事件
    $('span').bind("click",function(){
        var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";//获取html信息
        $('#msg').html(txt);// 设置html信息
    });
    // 为div元素绑定click事件
    $('#content').bind("click",function(){
        var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
        $('#msg').html(txt);
    });
    // 为body元素绑定click事件
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
        $('#msg').html(txt);
    });
})
</script>

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

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

修改如下:

<script type="text/javascript">
$(function(){
       // 为span元素绑定click事件
    $('span').bind("click",function(event){
        var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";
        $('#msg').html(txt);
        event.stopPropagation();    //  阻止事件冒泡
    });
    // 为div元素绑定click事件
    $('#content').bind("click",function(event){
        var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
        $('#msg').html(txt);
        event.stopPropagation();    //  阻止事件冒泡
    });
    // 为body元素绑定click事件
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
        $('#msg').html(txt);
    });
})
</script>

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

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

下面是案例:

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

html部分:

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

还有一种防止默认行为的方法就是return false。效果一样。

代码如下:

<script type="text/javascript">
$(function(){
   $("#sub").bind("click",function(event){
         var username = $("#username").val();  //获取元素的值
         if(username==""){     //判断值是否为空
             $("#msg").html("<p>文本框的值不能为空.</p>");  //提示信息
             return false;
         }
   })
})
</script>

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

<script type="text/javascript">
$(function(){
       // 为span元素绑定click事件
    $('span').bind("click",function(event){
        var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";
        $('#msg').html(txt);
        return false;
    });
    // 为div元素绑定click事件
    $('#content').bind("click",function(event){
        var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
        $('#msg').html(txt);
        return false;
    });
    // 为body元素绑定click事件
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
        $('#msg').html(txt);
    });
})
</script>
Javascript 相关文章推荐
JqueryMobile动态生成listView并实现刷新的两种方法
Mar 05 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
Jan 08 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 Javascript
vue下的@change事件的实现
Oct 25 Javascript
js实现时分秒倒计时
Dec 03 Javascript
JS定时器实例详细分析
Oct 11 #Javascript
jquery 清空file域示例(兼容个浏览器)
Oct 11 #Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 #Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 #Javascript
Js base64 加密解密介绍
Oct 11 #Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 #Javascript
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 #Javascript
You might like
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
拖动时防止选中
2017/02/03 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python文件操作方法详解
2020/02/09 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
期末学生评语大全
2014/04/24 职场文书
承诺书范本
2015/01/21 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫