JS preventDefault ,stopPropagation ,return false
所谓的事件有两种:监听事件和浏览器对特殊标签元素的默认行为事件。
监听事件:在节点上被监听的事件操作,如 select节点的change事件,a节点的click事件。
浏览器的默认事件:特定页面元素上带的功能,如a标签的href跳转,表单的提交事件。
执行监听事件在先,浏览器默认事件在后,所以可以在监听事件函数中,阻止浏览器的默认行为。
区别:preventDefault() 阻止浏览器默认事件 stopPropagation() 阻止事件的冒泡 return false; 阻止后续的所有行为
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
//preventDefault,比如<a href='http://www.baidu.com'>百度</a>,preventDefault的作用就是阻止它的默认行为
function stoptDefault (e) {
if(e&&e.preventDefault){
e.preventDefault();
}
else{
window.event.returnValue=false;
}
return false;
}
window.onload=function(){
var test=document.getElementById("testLink");
test.onclick=function(e){
alert("我的连接地址是:"+this.href+',但是我不跳转');
stoptDefault(e);
}
}
//stopPropagation 阻止js事件冒泡 window.onload=function(){
var parent1=document.getElementById("parent1");
var childrent1=document.getElementById("childrent1");
parent1.onclick=function(){
alert(parent1.id)
};
childrent1.onclick=function(){
alert(childrent1.id)
};
}
function stopPro(obj,evt){
var e=(evt)?evt:window.event;
if(window.event){
e.cancelBubble=true;//ie下的阻止冒泡
}
else{
e.stopPropagation();//其他浏览器下的阻止冒泡
}
}
window.onload=function(){
var parent2=document.getElementById("parent2");
var childrent2=document.getElementById("childrent2");
parent2.onclick=function(){
alert(parent2.id)
};
childrent2.onclick=function(e){
stopPro(this,e);
alert(childrent2.id)
};
}
</script>
</head>
<body>
<a href="http://www.baidu.com" id="testLink">百度</a>
<br/>
<div id="parent1" style="width:250px;background-color:yellow">
<p>This is parent1 div.</p>
<div id="childrent1" style="width:200px;background-color:orange">
<p>This is Chilren1.</p>
</div>
</div>
<br/>
<div id="parent2" style="width:250px;background-color:cyan;">
<p>This is parent2 div.</p>
<div id="childrent2" style="width:200px;background-color:lightblue;">
<p>This is childrent2. Will bubble.</p>
</div>
</div>
</body>
</html>
JS preventDefault ,stopPropagation ,return false的更多相关文章
- preventDefault()、stopPropagation()、return false 之间的区别
“return false”之所以被误用的如此厉害,是因为它看起来像是完成了我们交给它的工作,浏览器不会再将我们重定向到href中的链接,表单也不会被继续提交,但这么做到底有什么不对呢? 可能在你刚开 ...
- js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false
preventDefault: preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为.既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就 ...
- preventDefault()、stopPropagation()、return false 的区别
preventDefault() e.preventDefault()阻止浏览器默认事件 stopPropagation() e.stopPropagation()阻止冒泡 return false ...
- e.preventDefault() e.stopPropagation()和return false的区别
e.preventDefault(); //阻止事件的默认行为,比如a标签的转向,但不阻止事件的冒泡传播e.stopPropagation() //阻止事件的冒泡传播,但不阻止其默认行为returne ...
- 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 ...
- e.preventDefault()和e.stopPropagation()以及return false的作用和区别
前段时间开发中,遇到一个父元素和子元素都有事件时,发现会出现事件冒泡现象,虽然知道ev.stopPropagation()和ev.preventDefault()其中一个是阻止事件冒泡和阻止默认行为, ...
- 在jquery中each循环中,要用return false代替break,return true代替continue。
在jquery中each循环中,要用return false代替break,return true代替continue. $.each(data, function (n, value) { if(v ...
- 阻止事件冒泡两种方式:event.stopPropagation();和return false;
jQuery提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); $("#div1").mousedown(function (event) { ...
- preventDefault, stopPropagation, return false -JS事件处理中的坑
我们以一个文件上传ui重设计为例子来探讨这几个函数的区别: 其中的html代码如下: <div class="file-upload"> <input type= ...
随机推荐
- spark 问题
问题描述1 使用spark-shell ,sc.textFile("hdfs://test02.com:8020/tmp/w").count 出现如下异常: java.lang.R ...
- bzoj1001最小割
听说最大流过不去??? dinic果然神了,1000,000的点都能过(主要是比较稀疏) #include <cstdio> #define INF 9223372036854775807 ...
- PHP浮点数精度问题
这一段时间维护一个类似团购的系统,需要处理订单,也就难免会处理金额 所以有很多PHP的坑 被我狠狠的踩了~~ 首先我们要知道浮点数的表示(IEEE 754): 简言之 就是 埋下了一个大坑 等着你跳 ...
- 前端面试那些坑之HTML篇
HTML 1.Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html> 标签之前.告知浏览器的解析 ...
- 基于注解的Spring AOP入门、增强Advice实例
这篇文章简单通过一个例子,介绍几种增强的基本配置,以方便spring框架初学者对aop的代码结构有个清楚的了解认识.首先,spring支持aop编程,支持aspectJ的语法格式来表示切入点,切面,增 ...
- webform 光棒效果,删除操作弹出确定取消窗口
鼠标移入onmouseover和鼠标移出onmouseout,代码里没大写我这也就不大写了.那首先,我们得获取Class为tr_item里的所有东西,也就是项标签里的数据.然后呢,我们定义一个oldC ...
- Twitter面试题蓄水池蓄水量算法(原创 JS版,以后可能会补上C#的)
之前在群里有人讨论Twitter的面试题,蓄水池蓄水量计算,于是自己写了个JS版的(PS:主要后台代码还要编译,想想还是JS快,于是就使用了JS了.不过算法主要还是思路嘛,而且JS应该都没问题吧^_^ ...
- Delphi中stringlist分割字符串的用法
Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...
- UITableView(一)
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITableViewDataSource, ...
- 搭建Cordova开发环境
Cordova是什么 Apache Cordova是一套设备API,允许移动应用的开发者使用JavaScript来访问本地设备的功能,比如摄像头.加速计.它可以与UI框架(如jQuery Mobile ...