在页面上可以有多个事件,也可以多个元素响应同一件事,

事件冒泡引发的问题:

有些时候不想动用的事件,却因为事件冒泡而触发

解决问题:

1.事件对象

由于IE-DOM和标准的DOM实现事件对象的方法各不相同,导致在不同浏览器上获取事件对象变得比较困难,。针对这个问题,jq进行了必要的扩展和封装,从而使得在什么浏览器中都能够轻松地获取事件对象以及事件对象的一些属性。

在程序中,实现事件对象非常简单,只需要为函数添加一个参数,例:

$(element).bind('click',function(event){

  //event:事件对象

})

当单击element时,事件对象就被创建了,这个事件对象只有事件处理函数才能访问,事件处理函数执行完毕,事件对象就会被销毁。

2停止事件冒泡

停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行。在jq中提供了stopPropagation()方法来停止事件冒泡。

3.阻止默认行为

网页中的元素有自己的默认行为,例如 单击超链接后会跳转,点击“提交”按钮后表单会提交,有时需要阻止元素的默认行为。

在jq中,提供了preventDefault()方法来阻止元素的默认行为。

例,在项目中,经常需要验证表单,在单击“提交”按钮时,验证表单内容,

例如,某元素是否是必填字段,某元素长度是否够6位,当表单不符合提交条件时,要阻止表单的默认行为,(表单提交);

$(function(){

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

  var username=$("#username").val();//获取元素的值

  if(username=''){//判断值是否为空

    $('#el').html('<p>文本框值不能为空</p>');//提示信息

    event.preventDefault();//阻止默认行为(表单提交);

  }

})

})

如果想同时对事件对象停止冒泡和默认行为,可以在事件处理函数中返回false,这是对在事件对象上同时调用stopPropagation()和preventDefalut();

在表单的例子中,可以把

event.preventDefalut()//阻止默认行为

改写成

return  false;

也可以把事件冒泡例子中的

event.stopPropagation()//停止事件冒泡

改写成

return  false;

4.事件捕获

事件捕获和事件冒泡是两个相反的过程,事件捕获是从最顶端往下开始触发。

事件捕获并不是所有的主流浏览器都支持,并且这个缺陷无法通过javascript来修复,jq不支持事件捕获,如果需要用到事件捕获,只能用原生js;

jq的事件冒泡的更多相关文章

  1. 事件冒泡的应用——jq on的实现

    曾对jQuery中on的实现有所疑问,一直没有找到合适的实现方法,今日看<javascript高级程序设计>中的事件冒泡有了些思路. 针对于新增的DOM元素,JQ中若为其绑定事件就必须使用 ...

  2. jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载

    jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载 一丶jQuery动画 show,hide, ...

  3. jq事件冒泡问题

    在程序中使用事件对象非常简单,只需为函数添加一个参数,jquery代码如下: $("element").bind("click",function(event) ...

  4. jq 事件冒泡总结

    什么是JS事件冒泡? 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个 ...

  5. js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”. 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( ...

  6. 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流

    一.事件冒泡定义 事件冒泡是指在一个对象触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那 ...

  7. jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件

    jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...

  8. JS中的事件冒泡——总结

    一. 有话要说 事件冒泡这个话题已经被园子里的朋友说透了,已经没什么要讲的了,但是由于呢我这边有个小问题刚好跟这个事件冒泡有关,就突然性想写个总结:一方面是给自己增加印象,另一方面给园子的新手们,提供 ...

  9. JS中的事件、事件冒泡和事件捕获、事件委托

    https://www.cnblogs.com/diver-blogs/p/5649270.html https://www.cnblogs.com/Chen-XiaoJun/p/6210987.ht ...

随机推荐

  1. 如何在Eclipse和MyEclipse中安装SVN

    在安装目录下,找到dropins文件夹将svn文件复制进去.

  2. 笨方法学python--参数,解包,变量

    1 cmd中执行 python ex11.py, ex11.py部分也是所谓的"参数". 2 from sys import argv script, first, second, ...

  3. sql or 与and同时有时要注意

    如果是一天sql语句中有or和and同时在 正确:where xxx=xx and (xxx=xx or xxx=xx) 错误:where xxx=xx and xxx=xx or xxx=xx (这 ...

  4. List循环与Map循环的总结

    做了一下list和map的总结,没有什么技术含量,就全当复习了一下api. 测试环境是在junit4下,如果没有自己写一个main方法也是一样的. 首先是List的三种循环: @Test public ...

  5. arTemplate解析语法

    模板解析语法 defaults.parser = function (code, options) { // var match = code.match(/([\w\$]*)(\b.*)/); // ...

  6. hdu_5753_Permutation Bo(找规律)

    题目连接:hdu_5753_Permutation Bo 题意: 给你一个有n个数的数列c1~cn,h1~hn为1~n的排列,求ci[hi>hi-1  and  hi>hi+1]的期望和. ...

  7. hdu_2227_Find the nondecreasing subsequences_树状数组,离散化

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 题意:给你一个集合,让你求递增子序列有多少个,和树状数组求逆序对差不多,不过数据比较大,要离散化 ...

  8. 关于Adobe CC 系列软件反复弹出 Adobe 软件许可问题

    最近装了falsh cc2014 版本,并结合网络提供资源破解(可参考:http://www.cnblogs.com/-yan/p/4450196.html) 但是,使用超过二十四小时后(时间为估计值 ...

  9. myeclipse复制项目

    一.myEclipse 复制后修改名称,访问不到项目 这是因为,你只是改了项目的名称,而没有改 下面是解决方法: 方法 1.右击你的项目,选择"properties",在" ...

  10. 发现在看完objc基本语法之后,还是看Apple文档比较有用。

    现在已经停止找中文资料了,因为很多例子已经过时,运行不出来. 看完objc基本语法以后,Apple的资料也看得懂了. 还是应该跟着Apple的入门指南开始学,今后也应该以Apple的文档为主.