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 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
jquery原理以及学习技巧介绍
Nov 11 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
浅析vue数据绑定
Jan 17 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 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设计模式 php实现模板方法模式
2015/12/08 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
js实现下一页页码效果
2017/03/07 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Python random模块的使用示例
2020/10/10 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
大专生的学习自我评价
2013/12/04 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
委托函范文
2015/01/29 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python