zoukankan      html  css  js  c++  java
  • return false vs stopPropagation(), preventDefault(),stopImmediatePropagation()

      传说return false作用很强大,不仅可以阻止事件冒泡,还可以阻止浏览器的默认行为,还可以减少ie系列的bug。今天就来说说return false

         第一次用return false的时候是放在函数里面的,这样当函数作为if条件判断的时候,可以直接用return的返回值,因为返回的正好是个boolean值。还有个额外效果是,在return后面写的语句都不执行,因为在函数里面遇到return,就表示函数已经执行完。

    第二次就是用在a作为按钮的时候,阻止浏览器的默认行为,也就是a链接的自动跳转。

    术语简介:

    那么什么是默认行为呢?就是浏览器会对一些元素默认给予一定的操作,比如a,input[type='submit']等等,默认行为是在事件绑定事件之后执行的,因为在刷新页面的时候,绑定事件就从历史记录里移出了,所以绑定事件要先执行(查看w3c)。

    事件对象,event是事件函数触发产生的局部变量,随事件触发而产生,随事件结束而消失。

    事件冒泡,就是当在dom结构中,子元素发生的事件,会沿着dom树神经一直传到document上,而不是单单只在本元素发生事件

    所以,对于事件冒泡和浏览器的默认行为,作为事件对象,自然有他自己的处理方法,e.stopPropagation()和e.stopImmediatePropagation()都是用来阻止事件冒泡的。只是这两个方法有个区别,就是后面的方法不仅阻止了一个事件的冒泡,也把这个元素上的其他绑定事件也阻止了。而前者只是阻止一个绑定事件的冒泡,而不影响其他绑定事件执行。e.preventDefault()是用来阻止浏览器的默认行为的。

    return false很强大,可以同时阻止事件冒泡和浏览器的默认行为。

    那么你也许会问,既然有return false,那干嘛还有有其他的方法呢?这个嘛,事物既然存在就是有它的道理的。所以,当你需要阻止默认行为,但是又需要让他有事件冒泡行为的时候,你就不能用return false咯

    参考:

    http://api.jquery.com/event.stopImmediatePropagation/

    http://css-tricks.com/return-false-and-prevent-default/

    http://www.quirksmode.org/js/events_order.html

    http://www.quirksmode.org/js/events_early.html

    http://www.neoease.com/stoppropagation-and-preventdefault-and-return-false/

  • 相关阅读:
    HDU 6191 Query on A Tree ( 2017广西邀请赛 && 可持久化Trie )
    BZOJ 4318 OSU! ( 期望DP )
    洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
    Codeforces #499 E Border ( 裴蜀定理 )
    HDU 6444 Neko's loop ( 2018 CCPC 网络赛 && 裴蜀定理 && 线段树 )
    HDU 6438 Buy and Resell ( 2018 CCPC 网络赛 && 贪心 )
    Nowcoder Hash Function ( 拓扑排序 && 线段树优化建图 )
    Nowcoder Playing Games ( FWT 优化 DP && 博弈论 && 线性基)
    js中的深拷贝与浅拷贝
    nrm 源管理器
  • 原文地址:https://www.cnblogs.com/different/p/3083983.html
Copyright © 2011-2022 走看看