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 相关文章推荐
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
javascript每日必学之继承
Feb 23 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
dul无法加载bootstrap实现unload table/user恢复
Sep 29 Javascript
基于VUE.JS的移动端框架Mint UI的使用
Oct 11 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
如何将JavaScript将数组转为树形结构
Jun 02 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP设计聊天室步步通
2006/10/09 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
用C++封装MySQL的API的教程
2015/05/06 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
手写一个python迭代器过程详解
2019/08/27 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Python操作Jira库常用方法解析
2020/04/10 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
python xlsxwriter模块的使用
2020/12/24 Python
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
银行贷款承诺书
2014/03/29 职场文书
音乐幼师求职信
2014/07/09 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
Django Paginator分页器的使用示例
2021/06/23 Python