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


Posted in Javascript onFebruary 27, 2015

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

html代码部分:

<body>

    <div id="content">

        外层div元素

        <span>内层span元素</span>

        外层div元素

    </div>

    <div id="msg"></div>

</body>

jQuery代码如下:

<script type="text/javascript">

$(function(){

    $('span').bind("click",function(){

        var txt = $('#msg').html() + "<p>内层span元素被点<p/>";

        $('#msg').html(txt);

    });

    $('#content').bind("click",function(){

        var txt = $('#msg').html() + "<p>外层div元素被点击<p/>";

        $('#msg').html(txt);

    });

    $("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').bind("click",function(event){

        var txt = $('#msg').html() + "<p>内层span元素被点击<p/>";

        $('#msg').html(txt);

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

    });

    $('#content').bind("click",function(event){

        var txt = $('#msg').html() + "<p>外层div元素被点击<p/>";

        $('#msg').html(txt);

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

    });

    $("body").bind("click",function(){

        var txt = $('#msg').html() + "<p>body元素被点击<p/>";

        $('#msg').html(txt);

    });

})

</script>

        有时候点击提交按钮会有一些默认事件。比如跳转到别的界面。但是如果没有通过验证,就不应该跳转。这时候可以通过设置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').bind("click",function(event){

        var txt = $('#msg').html() + "<p>内层span元素被点<p/>";

        $('#msg').html(txt);

        return false;

    });

    $('#content').bind("click",function(event){

        var txt = $('#msg').html() + "<p>外层div元素被点<p/>";

        $('#msg').html(txt);

        return false;

    });

    $("body").bind("click",function(){

        var txt = $('#msg').html() + "<p>body元素被点<p/>";

        $('#msg').html(txt);

    });

})

</script>

jQuery对DOM的事件触发具有冒泡特性。有时利用这一特性可以减少重复代码,但有时候我们又不希望事件冒泡。这个时候就要阻止 jQuery.Event冒泡。

Javascript 相关文章推荐
JavaScript调用后台的三种方法实例
Oct 17 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
jQuery实现的多选框多级联动插件
May 02 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
JavaScript实现上下浮动的窗口效果代码
Oct 12 Javascript
es6学习笔记之Async函数的使用示例
May 11 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
Sep 30 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
layui实现三级联动效果
Jul 26 Javascript
vue.js 2.0实现简单分页效果
Jul 29 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 #Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 #Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
Feb 27 #Javascript
Javascript writable特性介绍
Feb 27 #Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 #Javascript
JavaScript函数详解
Feb 27 #Javascript
浅谈JavaScript的事件
Feb 27 #Javascript
You might like
php at(@)符号的用法简介
2009/07/11 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
YII框架http缓存操作示例
2019/04/29 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
电大自我鉴定范文
2013/10/01 职场文书
技术总监的工作职责
2013/11/13 职场文书
军训自我鉴定
2013/12/14 职场文书
需求分析说明书
2014/05/09 职场文书
鼓舞士气的口号
2014/06/16 职场文书
高中班主任评语
2014/12/30 职场文书
开学第一周总结
2015/07/16 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python