JQUERY中的事件处理:RETURN FALSE、阻止默认行为、阻止冒泡以及兼容性问题
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。
JQUERY中的事件处理:RETURN FALSE、阻止默认行为、阻止冒泡以及兼容性问题的更多相关文章
- FORM中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
在页面中有多个input type="text"的文本输入框的情况下没有问题,但是当页面中有只有一个文本框的情况下(),就会出现此问题. 后来在form 中添加:onsubmit= ...
- jQuery中的事件处理
1.页面载入完毕响应事件所谓页面载入完毕是指DOM元素载入就绪了,能够被读取和操作了.①jQuery中的$(doucument).ready()事件ready(fn)是jQuery事件模块中最重要的一 ...
- 原生js中stopPropagation,preventDefault,return false的区别
1.stopPropagation:阻止事件的冒泡,但不阻止事件的默认行为. 最好莫过于用例子说明: <div id='div' onclick='alert("div") ...
- jquery中ajax用return来返回值无效
jquery中,ajax返回值,有三种写法,只有其中一种是成功的 /** * async:false,同步调用 * 返回1:2 * 失败 * 分析:ajax内部是一个或多个定义的函数,ajax中ret ...
- jquery中这句 .stop(false,true); 什么意思
.stop 是jQuery中用于控制页面动画效果的方法.运行之后立刻结束当前页面上的动画效果.stop在新版jQuery中添加了2个参数:第一个参数的意思是是否清空动画序列,也就是stop的是当前元素 ...
- JavaScript中function 之return false的理解(实例代码)
1.司空见惯代码,在某一dom节点上注册事件方法 $("#btnResponse").click(Login); $("#txtCode").keydown(R ...
- JavaScript 阻止默认时间和冒泡时间
<!DOCTYPE HTML><html> <head> <title>event cancel</title> </head> ...
- Inverse是hibernate双向关系中的基本概念。inverse的真正作用就是指定由哪一方来维护之间的关联关系。当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系,说白了就是hibernate如何生成Sql来维护关联的记录
<set name ='students' table="students_table" inverse='false'(默认不用写) > <key column ...
- jquery中 cache: true和false的区别
true:会读缓存,可能真的到服务器上. 假如上次访问了a.html,第二次的时候得到的是上次访问的a.html的结果,而不是重新到服务器获取. false:会在url后面加一个时间缀,让它跑到服务器 ...
随机推荐
- ios IAP 内购验证
参考我之前的笔记 苹果内购笔记,在客户端向苹果购买成功之后,我们需要进行二次验证. 二次验证 IOS在沙箱环境下购买成功之后,向苹果进行二次验证,确认用户是否购买成功. 当应用向Apple服务器请求购 ...
- NEERC 2016-2017 Probelm G. Game on Graph
title: NEERC 2016-2017 Probelm G. Game on Graph data: 2018-3-3 22:25:40 tags: 博弈论 with draw 拓扑排序 cat ...
- linux命令(35):head命令
1.命令格式: head [参数]... [文件]... 2.命令功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行. 3.命令参数: -q 隐藏文件名 -v ...
- Django 批量导入文件
1. 按照xlrd软件 pip3 install xlrd 2. POST提交文件获取数据 方法一:写入硬盘,xlrd读取xlsx文件获取文件数据 def batch_view(self,reques ...
- MapReduce程序的几种提交运行模式
本地模型运行 1/在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行 ----输入输出数据可以放在本地路径下(c:/wc/ ...
- 【转】Django中的cookie与session
转自:https://www.cnblogs.com/chenchao1990/p/5283725.html cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空 ...
- java中的object... args参数
关于java方法中Object... args参数的含义 在阅读google发布的volley源码时,突然看到一个方法中存在这样的写法,如 :v(String format, Object... ar ...
- vue中keep-alive
vue2.0提供了一个keep-alive组件用来缓存组件,避免多次加载相应的组件,减少性能消耗 1.基本用法,缓存整个页面或组件 <keep-alive> <component&g ...
- 使用screen后台实时执行命令
在做一个大体积的数据备份时,在远程终端上直接运行备份脚本back.sh,或运行back.sh&放到后台运行,此时关闭远程终端,或网络断开都会让命令停止运行.此时就要使用到screen命令. s ...
- CentOS7编译安装PostgreSQL
创建组和用户 groupadd postgres useradd -g postgres postgres passwd postgres 编译安装 yum install -y gcc gcc-c+ ...