return false

在jQuery中,我们常用return false来阻止浏览器的默认行为,那”return false“到底做了什么?

当你每次调用”return false“的时候,它实际上做了3件事情:

  • event.preventDefault();

  • event.stopPropagation();

  • 停止回调函数执行并立即返回。

对,你没看错,return false确实做了这么多操作。它之所以被一再无误用,是因为使用它后看起来像是完成了我们的阻止任务,并且语句也很简单。

这3件事中用来阻止浏览器继续执行默认行为的只有preventDefault,除非你想要停止事件冒泡,否则使用return false会为你的代码埋下很大的隐患。

preventDefault()

大多数情况下,当你使用return false时,你其实真正需要的是e.preventDefault()。要使用e.preventDefault,你需要确保你传递了event参数到你的回掉函数中。它会替我们完成所有工作,但不会阻止父节点继续处理事件,要记住,你放在代码中的限制越少,你的代码就越灵活,也就越易于维护。

但在使用中你会发现preventDefault有兼容性问题,老版本的IE并不理会这个方法,依然我行我素,此时我们需要一点兼容代码来搞定IE:

       window.event.returnValue=  false;//返回值设为false
       window.event.keyCode = 0;//如果你想阻止键盘的默认行为,如F5,则这句也是需要的

stopPropagation()

有些情况下,你有可能需要停止事件冒泡,直接使用stopPropagation即可。

stopImmediatePropagation()

这个方法会停止对象上相关事件的继续执行,即使当前的对象上还绑定了其它处理函数。有时你的代码非常复杂,不同的widgets和plugin就有可能在同一个对象上添加事件,如果遇到这种情况,那你就很有必要理解和使用stopImmediatePropagation。

最新文章

  1. TCP同步与异步,长连接与短连接【转载】
  2. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析
  3. ProgressBar
  4. [转]在Ubuntu 14.04安装和使用Docker
  5. Doxygen给C程序生成注释文档
  6. Java/javaEE/web/jsp/网站编程环境配置及其软件下载和网站路径
  7. Struts2(十)OGNL标签二与Struts2标签
  8. 【Todo】Python字符编码学习
  9. 【JAVA】浅谈java枚举类
  10. Python3 如何优雅地使用正则表达式(详解七)
  11. 【错排问题】【HDU2048】神、上帝以及老天爷
  12. JS插件库
  13. SpringMvc的运行流程
  14. 拥抱.NET Core系列:Logging (1)
  15. 串口接收模块(verilog) 波特率115200
  16. C#多线程编程のTask(任务全面解析)
  17. 找不到 EntityType “ ” 的映射和元数据信息。
  18. C# Excel导数据
  19. 计算概论(A)/基础编程练习1(8题)/6:判断闰年
  20. 『cs231n』循环神经网络RNN

热门文章

  1. Activiti如何替换已部署流程图
  2. linux命令(42):wc命令
  3. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记1——创建窗口&GDI
  4. 《深入浅出MyBatis技术原理与实战》——7. 插件
  5. Sql Server中常用函数replicate
  6. Linux rsync数据定时增量备份
  7. mocha测试es6问题
  8. 345. Reverse Vowels of a String【Easy】【双指针-反转字符串中的元音字符】
  9. ExtJs之组件(window)
  10. 【图论】Self-Assembly(6-19)