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 相关文章推荐
js程序中美元符号$是什么
Jun 05 Javascript
33种Javascript 表格排序控件收集
Dec 03 Javascript
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 Javascript
jquery 图片Silhouette Fadeins渐显效果
Feb 07 Javascript
jquery validation插件表单验证的一个例子
Mar 03 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
使用express来代理服务的方法
Jun 21 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 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 curl_init函数用法
2014/01/31 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
python添加模块搜索路径方法
2017/09/11 Python
django使用xadmin的全局配置详解
2019/11/15 Python
python 伯努利分布详解
2020/02/25 Python
Python排序函数的使用方法详解
2020/12/11 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
大学生专业个人学习的自我评价
2013/10/26 职场文书
党建工作整改措施
2014/10/28 职场文书
中班下学期个人总结
2015/02/12 职场文书
房屋产权证明书
2015/06/19 职场文书
毕业赠语大全
2015/06/23 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
勤俭节约主题班会
2015/08/13 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
人民调解协议书
2016/03/21 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Python中的tkinter库简单案例详解
2022/01/22 Python
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS