1、冒泡和默认行为

  1. <div class="aa">
  2. <div class="bb">
  3. <div class="cc">
  4. <em>
  5. <strong>
  6. 冒泡测试3
  7. </strong>
  8. </em>
  9. </div>
  10. </div>
  11. </div>
  12. <div>
  13. <form action="http://www.baidu.com" method="post">
  14. <input type="submit" value="提交">
  15. </form>
  16.  
  17. <a href="http://www.baidu.com">百度一下</a>
  18.  
  19. </div>
  20.  
  21. <script src="jquery-3.2.1.js"></script>
  22. <script>
  23. $(function () {
  24. // $(document).bind("click",function () {
  25. //
  26. // alert("第一层冒泡")
  27. // })
  28. // $("div .bb").bind("click",function () {
  29. // alert("第二层冒泡测试")
  30. // })
  31. // $("div .cc").bind("click",function (e) {
  32. // e.stopPropagation()
  33. // alert("第三层冒泡测试")
  34. // })
  35.  
  36. // 第一层里是document,第二层是div,第三层还是div,都绑定了click事件,如果直接点第三层的事件,则首先会执行第三层绑定的函数,然后会执行第二层的函数,最后
  37. // 在实行最后一层的函数,如果我们想阻止这样的行为该怎么处理e.stopPropagation(),这样,这一层就不会出现冒泡行为了
  38.  
  39. // 阻止默认行为是上面意思呢?比如我们的按钮,和超链接,如果我们点击了就会提交数据或者跳转到超链接,我们就可以使用代码实现阻止这样的默认行为
  40. // 看到下面的例子,就阻止了a标签和input标签的默认行为,preventDefault
  41.  
  42. // $("a").bind("click",function (event) {
  43. // event.preventDefault()
  44. // })
  45. // $(":input[type='submit']").bind("click",function (event) {
  46. // event.preventDefault()
  47. // )}
  48.  
  49. // 如果在函数中直接返回false,就可以实现取消默认行为+阻止冒泡行为

  

2、模拟用户操作

  1. <input type="button" value="提交">
  2. <script src="jquery-3.2.1.js"></script>
  3. <script>
  4. $(function () {
  5.  
  6. // 这个是用户的真实操作,而不是浏览器模拟用户操作,如果在加上下面的代码,就实现了浏览器模拟用户的click事件
  7. // $(this).bind('click',function () {
  8. // alert("模拟用户点击页面")
  9. //
  10. // $(this).trigger('click')
  11. //
  12. // })
  13.  
  14. // 用下面这种写法也可以实现模拟用户行为
  15. // $('input').bind('click',function () {
  16. // alert("第二种模拟用户点击页面的方法")
  17. // }).trigger('click')
  18.  
  19. // 自定义事件,主要是用在只要浏览器刷新就会自动执行的事件,相当于刷新页面触发一个函数一样的效果
  20. // $(':input').bind('myevent',function () {
  21. // alert("自定义事件")
  22. // }).trigger('myevent')
  23.  
  24. //trigger和triggerHandler的区别
  25. // 1、如果标签有默认行为,则riggerHandler不会执行默认行为,trigger则会执行默认行为,比如点击按钮提交数据,这里就会有一个默认的行为
  26. // 2、如果匹配到多个标签,则trigger会每个标签执行一次,而triggerHandler只第一个标签会执行默认行为,后面的标签不会执行默认行为
  27. // 3、返回值不一样
  28.  
  29. //命令空间,比如下面的例子,一个input上绑定了2个click事件,但是我们只想把abc这个事件去掉该怎么办呢,我们可以在click后加一个点,在一些随机数就可以了
  30.  
  31. // $("input").bind('click',function () {
  32. // alert('abc')
  33. // })
  34. // $("input").bind('click',function () {
  35. // alert('123')
  36. // })
  37. //
  38. // $("input").bind('click.abc',function () {
  39. // alert('abc')
  40. // })
  41. // $("input").bind('click.123',function () {
  42. // alert('123')
  43. // })
  44. //
  45. // $("input").unbind('click.123')
  46.  
  47. })

  

3、事件委托

  1. <div class="aa" id="box">
  2. <input type="button" value="按钮">
  3. <input type="button" value="按钮">
  4. <input type="button" value="按钮">
  5. <input type="button" value="按钮">
  6. </div>
  7. <script src="jquery-3.2.1.js"></script>
  8. <script>
  9. $(function () {
  10. // $(':button').bind('click',function () {
  11. // alert("事件不委托")
  12. // })
  13.  
  14. // 使用live绑定的是document,而非button,所有永远只会绑定一次事件
  15. // $(":button").live('click',function () {
  16. // alert('事件委托绑定')
  17. //
  18.  
  19. // })
  20. // bind不能动态绑定,比如下面的例子,我开始有4个button按钮,我点击这4个中的任何一个
  21. // 都会触发下面的click事件,然后复制出来一个按钮,但是如果我点击复制出来的按钮,则不会
  22. // 在复制出来新的按钮,这就是bind不能动态绑定的意思;同样live可以实现动态绑定,因为事件是
  23. // 绑定在document上,而点击button是冒泡到document,如果要触发这个冒泡,还会校验event type
  24. // 和event target
  25. // $(':button').bind('click',function () {
  26. // $(this).clone().appendTo(".aa")
  27. //
  28. // })
  29. // live已经被废弃了,live的替代方法是delegate<,他只绑定父元素
  30. // $("#box").delegate('input','click',function () {
  31. // $(this).clone().appendTo('#box')
  32. // })
  33. //
  34. // $("#box").undelegate("input",'click')
  35.  
  36. //on off one 这个才是重点
  37.  
  38. //普通的绑定:bind
  39. //普通的解绑:unbind
  40. //普通的事件委托:delegate
  41. //普通的事件委托解绑:undelegate
  42. //方法太多,导致换乱,所有这里提供了新的方法 on和off
  43. //新方法绑定:on
  44. //新方法解绑:off
  45. // 普通使用
  46. // $(":input").on('click',function () {
  47. // alert('替代bind')
  48. //
  49. // })
  50.  
  51. // 额外数据也是可以的
  52. // $(":input").on('click',{user:'cui'},function (e) {
  53. // alert('替代bind' + e.data.user)
  54. //
  55. // })
  56.  
  57. // 执行多个事件也是可以的
  58. // $(":input").on('click dblclick',{user:'cui'},function (e) {
  59. // alert('替代bind' + e.data.user)
  60. //
  61. // })
  62. // $(":input").on({
  63. // click:function () {
  64. // alert('鼠标单击')
  65. // },
  66. // dblclick:function () {
  67. // alert('鼠标双击')
  68. // }
  69. // })
  70.  
  71. //同样阻止默认行为和冒泡也是可以的,方法和bind是一样的
  72.  
  73. //通过off来移除事件,也支持移除多个,也支持明明空间
  74.  
  75. //on如何替换delegate呢?也是通过父元素绑定和删除
  76. // $("#box").on('click',':input',function () {
  77. // $(this).clone().appendTo('#box')
  78. // })
  79. //移除事件委托
  80. // $("#box").off('click',':input')
  81.  
  82. //one的意思,仅仅触发一次,然后就会移除事件
  83.  
  84. // $(":input").one('click',function () {
  85. // alert("one来触发事件")
  86. // })
  87.  
  88. // 同样one的委托效果也是一样的 ,只有第一次生效
  89. // $("#box").one('click',':input',function () {
  90. // $(this).clone().appendTo("#box")
  91. // })
  92.  
  93. })

  

jQuery的event事件的更多相关文章

  1. JQuery常用API 核心 效果 JQueryHTML 遍历 Event事件

    JQuery 常用API 参考资料:JQuery 官网   jQuery API 中文文档 核心 jQuery 对象 jQuery() 返回匹配的元素集合,无论是通过在DOM的基础上传递的参数还是创建 ...

  2. jQuery通过event获取点击事件的事件对象

    要想搞明白js的事件机制,必须搞清楚几个概念:事件对象,事件源,还有事件流 事件对象: 当事件发生时会产生事件对象,事件对象的作用是用来记录“事件发生是一些相关的信息.注意事件对象只有在事件发生时才会 ...

  3. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  4. jQuery:详解jQuery中的事件(一)

    之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...

  5. jQuery原生框架-----------------事件

    jQuery.extend({ // 绑定事件 addEvent: function( ele, type, fn ) { // ele不是DOM,type不是字符串,fn不是函数,打包打走 if( ...

  6. Javascript事件模型系列(三)jQuery中的事件监听方式及异同点

    作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年 ...

  7. jQuery中的事件与动画 (你的明天Via Via)

    众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...

  8. Jquery中的事件和动画

    在学习Jquery中的过程中我们绝大部分都用到了事件的操作,也可以说事件是Jquery中必不可少的一部分,我们常见的一些事件有单击事件,鼠标事件,键盘事件等等.在Jquery中的学习中为了能使让页面以 ...

  9. 关于jQuery新的事件绑定机制on()的使用技巧

    关于jQuery新的事件绑定机制on()的使用技巧 http://www.jb51.net/article/36064.htm 本篇文章介绍了,关于jQuery新的事件绑定机制on()的使用技巧.需要 ...

随机推荐

  1. LambdaMART简介——基于Ranklib源码(一 lambda计算)

    学习Machine Learning,阅读文献,看各种数学公式的推导,其实是一件很枯燥的事情.有的时候即使理解了数学推导过程,也仍然会一知半解,离自己写程序实现,似乎还有一道鸿沟.所幸的是,现在很多主 ...

  2. 转 关于nvcc fatal : Value 'sm_20' is not defined for option 'gpu-architecture'的问题

    原文地址: https://blog.csdn.net/Mao_Jonah/article/details/78965827 关于nvcc fatal : Value ‘sm_20’ is not d ...

  3. html5 data属性的使用

    html5 data属性定义和用法 <ul> <li data-animal-type="bird">Owl</li> <li data- ...

  4. 智能家居入门DIY——【六、使用OneNet后台处理数据】

    OneNet使用起来要比lewei50复杂一些,它没有前台需要自己开发.命令下发也和之前介绍的lewei50有一些区别,这里着重介绍一下使用MQTT协议来进行通讯. 一.准备 1.Esp8266开发板 ...

  5. scrollWidth,clientWidth,offsetWidth的区别 ---转载的

    转载自博客:http://www.cnblogs.com/kongxianghai/p/4192032.html 通过一个demo测试这三个属性的差别. 说明: scrollWidth:对象的实际内容 ...

  6. 二、jdk命令之javah命令(C Header and Stub File Generator)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  7. Centos6.5安装phpldapadmin

    phpLDAPadmin是一个基于Web的LDAP管理工具用于管理LDAP服务器的各个方面.你可以利用它浏览LDAP Tree,创建/删除/修改和复制节点(entry) ,执行搜索,导入/导出LDIF ...

  8. Ngnix常用的操作

    Nginx的常用参数如下: # /usr/local/nginx/sbin/nginx -h nginx version: nginx/0.7.63 Usage: nginx [-?hvVt] [-s ...

  9. Android图片高斯模糊的一些方法

    高斯模糊 高斯模糊就是将指定像素变换为其与周边像素加权平均后的值,权重就是高斯分布函数计算出来的值. 一种实现 点击打开链接<-这里是一片关于高斯模糊算法的介绍,我们需要首先根据高斯分布函数计算 ...

  10. C++中的STL中map用法详解(转)

    原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解   Map是STL的一个关联容器,它提供 ...