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 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
js用图作提交按钮或超连接
Mar 26 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
JavaScript 反科里化 this [译]
Sep 20 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
Vue渲染过程浅析
Mar 14 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
证婚人经典证婚词
2014/01/09 职场文书
感恩寄语大全
2014/04/11 职场文书
学校标语大全
2014/06/19 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
公司放假通知范文
2015/04/14 职场文书
2016春节放假通知范文
2015/08/18 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS