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后面加一个时间缀,让它跑到服务器 ...
随机推荐
- ie6、ie7下overflow失效
如果父对象有overflow:hidden属性,子对象中的position属性是relative或者absolute, 那么在ie6和ie7下父对象的overflow会失效,解决办法是给父对象加rel ...
- Leetcode 之Binary Tree Postorder Traversal(46)
采用广度优先遍历,一个变量记录层数,一个变量记录方向. void traverse(TreeNode *root, vector<vector<int>> result, in ...
- java的关键字final
final可以修饰类,成员方法,成员变量. 1.final修饰的类不能被继承,所以没有子类 final class First{ int num; } class Second extends Fir ...
- django开发项目实例1--建立一个项目并初步运行
1:进入目标目录新建一个项目 D:\>django-admin.py startproject qiweijie 新建完成后,进入项目文件夹查看目录 D:\>cd qiweijie D:\ ...
- find命令的基本用法
linux 中find 常用示例解析 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression] 其实[-H] [-L] [- ...
- 赤峰项目目前的mysql配置项目
#BEGIN CONFIG INFO #DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries #TYPE: SYSTEM ...
- K8S的APISERVER,应用了HTTPS之后,命令行如何访问?
用命令行总是很麻烦,因为要自定义一些证书的位置....... curl https://1.2.3.1:443/api/v1/nodes \ --cacert /etc/kubernetes/pki/ ...
- Go语言建立一个最简单的服务端点
handlers/handlers.go package handlers import ( "encoding/json" "net/http" ) func ...
- mysql数据库设置远程连接权限
原文 问题现象 mysql 安装完毕,本机登录正常,在远程输入正确账号密码登录连接时报错如下 问题原因 远程IP没有登录权限,root用户默认只能在localhost也就是只能在本机登录,需要设置允许 ...
- NET牛人应该知道些什么?(瞬间觉得自己弱爆了)
任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...