jQuery中阻止冒泡事件的方法介绍


Posted in Javascript onApril 12, 2014

一、冒泡事件简介

当我们点击一个控件的时候,如果包括这个控件的父控件也有click事件,则会继续执行。
比如:div下的a都有click事件,点击a的时候,会alert出现2次。这个现象叫做冒泡事件。

这个事件从原始元素开始一直冒泡到DOM树的最上层。
目标元素: 任何一个事件的目标元素都是最开始的那个元素,在我们的这个例子中也就是按钮,
并且它在我们的元素对象中以属性的形式出现。使用事件代理的话我们可以把事 件处理器添加到一个元素上,
等待一个事件从它的子级元素里冒泡上来,并且可以很方便地得知这个事件是从哪个元素开始。
注意:
blur、focus、load和unload不能像其它事件一样冒泡。事实上blur和focus可以用事件捕获而非事件冒泡的方法获得(在IE之外的其它浏览器中)。

二、阻止jQuery事件冒泡

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

在jQuery.Event的文档中的开头得知,jQuery.Event对象是符合W3C标准的一个事件对象,同时jQuery.Event免去了检查兼容IE的步骤。
jQuery.Event提供了一个非常简单的方法来阻止事件冒泡:event.stopPropagation();

$("p").click(function(event){
     event.stopPropagation();
     // do something
})

但是这个方法对使用live绑定的事件没有作用,需要一个更简单的方法阻止事件冒泡:return false;

$(this).after("Another paragraph!");
return false;  });

兼容多个浏览器的终止冒泡函数:

   function stopDefault(e) {
        //阻止默认浏览器动作(W3C)
        if (e && e.preventDefault)
            e.preventDefault();
        //IE中阻止函数器默认动作的方式
        else
            window.event.returnValue = false;
        return false;
    }

三、使用event.tatget属性 明确事件对象

事件处理程序中的变量event保存着事件对象。而event.tatget属性保存着发生事件的目标元素。这个属性是DOM API中规定的,但是没有被所有浏览器实现。jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性。通过.target,可以确定DOM中首先接收到事件的元素。而且,我们知道this引用的是处理事件的DOM元素。

使用event.tatget属性 明确事件对象

阻止事件冒泡的代码如下:

$(document).ready(function() {
    $('switcher').click(function(event){
        if(event.target == this)
        {
            $('switcher .button').toggleClass('hidden');
        }
    };)
});

Javascript 相关文章推荐
javascript eval和JSON之间的联系
Dec 31 Javascript
JQuery从头学起第二讲
Jul 04 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
vue中如何使用ztree
Feb 06 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 Javascript
JavaScript实现筛选数组
Mar 02 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 #Javascript
javascript事件冒泡详解和捕获、阻止方法
Apr 12 #Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 #Javascript
用jquery写的菜单从左往右滑动出现
Apr 11 #Javascript
瀑布流布局代码一例
Apr 11 #Javascript
javascript读写json示例
Apr 11 #Javascript
javascript如何判断输入的url是否正确
Apr 11 #Javascript
You might like
ThinkPHP的Widget扩展实例
2014/06/19 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
python实现自动解数独小程序
2019/01/21 Python
python多线程并发及测试框架案例
2019/10/15 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
python开发一款翻译工具
2020/10/10 Python
Python的collections模块真的很好用
2021/03/01 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
餐饮加盟计划书
2014/01/10 职场文书
联谊活动策划书
2014/01/26 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
英语邀请函范文
2015/02/02 职场文书
2015年电教工作总结
2015/05/26 职场文书
保护动物的宣传语
2015/07/13 职场文书
2015选调生工作总结
2015/07/24 职场文书
Flask response响应的具体使用
2021/07/15 Python
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang