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 相关文章推荐
jquery validation插件表单验证的一个例子
Mar 03 Javascript
jQuery find和children方法使用
Jan 31 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
May 16 Javascript
Jquery index()方法 获取相应元素索引值
Oct 12 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
jQuery无刷新上传之uploadify3.1简单使用
Jun 18 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
Sep 22 Javascript
详解Js模板引擎(TrimPath)
Nov 22 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
修改npm全局安装模式的路径方法
May 15 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
一个程序下载的管理程序(一)
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
javascript 写类方式之三
2009/07/05 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python装饰器decorator用法实例
2014/11/10 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
C和C++经典笔试题附答案解析
2014/08/18 面试题
实习单位接收函
2014/01/11 职场文书
上班玩手机检讨书
2014/02/17 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS