原生js中stopPropagation,preventDefault,return false的区别
1、stopPropagation:阻止事件的冒泡,但不阻止事件的默认行为。
最好莫过于用例子说明:
<div id='div' onclick='alert("div");'>
<ul onclick='alert("ul");'>
<li id='ul-a' onclick='alert("li");'><a href="http://www.baidu.com" id="link">baidu.com</a></li>
</ul>
</div>
a.addEventListener("click",function(event){
event.stopPropagation();
},false);
在FF上执行,不会弹出li,ul,div的弹出框,而是直接跳转。在上面定义的事件中,侦听的是事件冒泡阶段(第三个参数为false,若为true则是捕获阶段)。IE不支持事件流,在IE中定义事件处理程序需要使用attachEvent:
a.attachEvent("onclick",function(event){event.cancelBubble = true;});
2、preventDefault:阻止事件的默认行为,但不阻止冒泡。
在FF,chrome,Safari,opera有效:
a.addEventListener("click",function(event){
event.preventDefault();
},false);
在IE有效:
a.attachEvent("onclick",function(event){event.returnValue = false;});
浏览器执行,会弹出li,ul,div的弹出框,但不会跳转。
3、return false:看到网上说return false会阻止事件的冒泡,但是应该要看定义事件使用的是什么方式
若使用a.onclick或a.attachEvent,则 return false会阻止默认行为;
若使用a.addEventListener,则return false 不会阻止默认行为;
因此,使用原生js时,若要阻止默认行为,最好还是用event.preventDefault(针对非IE)或event.returnValue=false(针对IE)来设定。
若使用的是jquery,return false 即会阻止默认行为,也会阻止事件的冒泡。在jquery中,一般使用return false.
原生js中stopPropagation,preventDefault,return false的区别的更多相关文章
- 【前端】stopPropagation, preventDefault, return false的区别
e.stopPropagation()阻止事件冒泡或者捕获 因为事件可以在各层级的节点中传递, 不管是冒泡还是捕获, 有时我们希望事件在特定节点执行完之后不再传递, 可以使用事件对象的 stopPro ...
- stopPropagation(), preventDefault() , return false 事件
因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagati ...
- preventDefault()、stopPropagation()、return false 的区别
preventDefault() e.preventDefault()阻止浏览器默认事件 stopPropagation() e.stopPropagation()阻止冒泡 return false ...
- e.preventDefault() e.stopPropagation()和return false的区别
e.preventDefault(); //阻止事件的默认行为,比如a标签的转向,但不阻止事件的冒泡传播e.stopPropagation() //阻止事件的冒泡传播,但不阻止其默认行为returne ...
- js中fn()和return fn()的区别
参考文章:http://www.jb51.net/article/87977.htm 这文章中没有讲明白,其实只要把文章里的代码加和不加return调试一下就知道是怎么回事了. var i = 0; ...
- js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false
preventDefault: preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为.既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就 ...
- event.stopPropagation()、event.preventDefault()与return false的区别
做小demo时经常用到return false来取消默认事件,但一直不是很懂它和preventDefault()等的区别,今天查了查文档和大神们的博客,在这里对相关知识点做一个总结 首先开门见山,总结 ...
- How to correctly use preventDefault(), stopPropagation(), or return false; on events
How to correctly use preventDefault(), stopPropagation(), or return false; on events I’m sure this h ...
- js中的preventDefault与stopPropagation详解
本篇文章主要是对js中的preventDefault与stopPropagation进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 首先讲解一下js中preventDefault和stopP ...
随机推荐
- qt5.8使用qwebenginview注意事项
环境qt5.8,vs2015(ui.webview必须要先show出来,不然加载不成功) 1.项目属性,c/c++,常规,附加包含目录,新增: $(QTDIR)\include\QtWebChanne ...
- HYSBZ 1588 营业额统计 (Splay树)
题意:给出一个公司每一天的营业额,求每天的最小波动值之和.该天的最小波动值= min { 绝对值| 该天以前某一天的营业额-该天的营业额 | }.第一天的最小波动值就是其自己. 思路:Splay伸展树 ...
- Zotero文献管理神器使用
为什么使用Zotero管理论文? 1.可以从网上剪藏 2.可以查询 3.有作者 标题 期刊 索引 4.word自动生成论文索引 把pdf文件导入Zotero 按住ctrl+shift拖动pdf文件,就 ...
- js 逻辑运算符、等号运算符
1 逻辑运算符 逻辑运算只有2个结果,一个为true,一个为false. 1.且&& ★ 两个表达式为true的时候,结果为true. ------------------------ ...
- Java BufferedReader文件读取 带缓冲区的字符流
package org.jimmy.autosearch2019.test; import java.io.BufferedReader; import java.io.FileInputStream ...
- kotlin - Parcelable implementations generator
本文摘自——https://kotlinlang.org/docs/tutorials/android-plugin.html Android Extensions plugin provides P ...
- ios NSRange
Objective-C中判断字符串是否包含其他字符串 -(BOOL) hasPrefix:(NSString *) astring;检查字符串是否以astring开头:-(BOOL) hasSuffi ...
- 如何使用postman访问网站
1.输入Request URL2.选择Request Method3.输入需要的Request Headers注意:一般token会在Headers中
- NOIp2018 提高组初赛试题参考答案
- CentOS7.4搭建kafka单结点和集群
操作系统选择 CentOS7.4x86-64(操作系统的x86_64是跟CPU有关的,最早AMD公司开发出了一款向下兼容x86CPU,向上又扩充了指令集,具有了64位CPU的特性,这款CPU后来改名为 ...