很多时候我们都想阻止一个a ?link的href跳转。

1
<a onclick=”return false;” href=”www.360.cn”>click</a>

以上代码可以达到这个效果

有一点要注意

1
2
3
4
5
6
7
function stop(){
  
return false;
  
}
  
<a onclick=”stop();” href=”www.360.cn”>click</a>

这么写是不会阻止默认事件的,stop()反回false, ?onclick却没有返回值 只有事件的返回值是false时 才会阻止默认事件 所以要这么写:

1
<a onclick=”return stop();” href=”www.360.cn”>click</a>

这样就会有效果, 那么如果是用绑定事件的方式呢 会怎么样呢

qwrap是用标准的事件绑定方式来做的 可以用它来测试

1
2
3
<a id=”testa” href=”www.360.cn”>click</a>
  
W(‘#testa’).click(function(){ return false;});// 这是一个标准的绑定事件方法

测试后发现 ie是可以阻止默认事件的 ?标准浏览器 chrome firefox等却没有能阻止 直接发生了跳转

分析后发现因为标准浏览器使用 addEventListener 绑定事件 而该方法是没有返回值的,可参见w3c文档 没有返回值, 返回值当然不会是false所以继续执行href 。

而ie使用attachEvent的方法这个方法是有returnValue的参见?http://msdn.microsoft.com/en-us/library/ie/aa703898(v=vs.85).aspx

所以成功阻止了默认事件,

那么使用addEventListener绑定事件 如何阻止呢 ?

虽然addEventListener 不能有返回值 但是它有一个方法 preventDefault() 专门用来阻止默认事件 ,

1
W(‘#testa’).click(function(e){ e.preventDefault();});

这样就可以成功阻止了.

所以 用addEventListener绑定的事件 必须用preventDefault()来阻止默认事件

但是又有一个现象

1
$(‘#testa’).click(function(){return false;});

query 却可以做到, 以上代码运行成功在所有浏览器

这是为什么 ?这并不是jquery可以例外 只是它悄悄的调用了preventDefault() 和 stopPropagation()

jqeury会把事件的响应函数封装在一个dispach的函数里 如果发现你的函数return false 就会同时调会preventDefault() 和stopPropagation()

所以在jquery中 return false 等价于:

1
2
3
4
5
e.preventDefault()
  
e.stopPropagation()
  
return false;

这三个

转载于:https://www.cnblogs.com/gina/p/9216223.html

由href return false 来看阻止默认事件相关推荐

  1. React:阻止默认事件

    在html页面中直接通过return false即可阻止默认事件 <a href="#" onclick="alert('阻止跳转');return false&q ...

  2. jquery阻止默认行为_Jquery 事件冒泡 以及阻止默认事件

    1.e.preventDefault()阻止事件默认行为 e.preventDefault();----根据英文意思,如:xx $("#xx").click(function(e) ...

  3. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

    今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ...

  4. js为链接绑定点击事件并且附带return false;来阻止跳转

    <!DOCTYPE HTML> <html><head><meta charset="gb2312" /><title> ...

  5. JavaScript事件冒泡、事件捕获和阻止默认事件

    谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 冒泡篇 先来看一段实例: js: var $input = document. ...

  6. JS标签中 阻止默认事件的发生

    若html标签中定义了两个事件(包含一个自定义函数),那么系统会先执行用户自定义的函数,然后执行标签默认函数.如果想要在执行完自定义函数之后阻止系统默认函数的执行,可以进行如下设置: 因为html标签 ...

  7. js阻止默认事件(a标签跳转),阻止事件冒泡

    最近刚学习完js基础,今天发现对js的默认事件阻止以及阻止事件的冒泡有点忘记,于是写这篇文章算是做一个总结,也是加深一下印象. 1.阻止默认事件 在html中有很多自带默认事件的元素,很典型的例子:a ...

  8. jquery 阻止冒泡事件和阻止默认事件

    jQuery 冒泡和默认事件: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  9. Js阻止事件冒泡与阻止默认事件

    1.event.stopPropagation()方法 event.stopPropagation()方法阻止事件冒泡到父元素,阻止任何父事件处理程序被执行.不让事件向document上蔓延,但是默认 ...

最新文章

  1. mysql中使用join exists in时该注意的问题
  2. CentOS7下ntp安装步骤
  3. linux下批量转换语音采样率(8000Hz)
  4. linux基本操作之目录、vi等
  5. MySQL外键创建失败1005原因总结
  6. 数据库基础知识——DQL语言(二)
  7. leetcode - 4. Median of Two Sorted Arrays
  8. c语言中如何确保一个程序是单例的_浅谈设计模式——单例模式
  9. 王爽《汇编语言》检测点1.1答案及解析
  10. 微信公众账号调取用户昵称和用户头像
  11. 头条鲁班新户千展费用_今日头条广告投放的费用大概是多少?
  12. 使用Scala实现Either数据结构
  13. elasticSearch搜索引擎安装使用,SprignBoot整合Spring Data Elasticsearch,百度云 Elasticsearch安装包
  14. arcgis多面体数据转面_多面体转 Collada (转换)
  15. win7 efi安装(个人心得)
  16. xmanager连接linux7桌面,使用Xmanager连接CentOS 7远程桌面
  17. 【目标】新学期计划与目标
  18. World Streamer学习2
  19. 前端炫酷登录页,拿来就能用
  20. PWM控制技术+Simulink仿真详解

热门文章

  1. python 启动参数_python启动参数
  2. JavaScript创建对象的三种方式之利用字面量创建对象及使用方法(1)
  3. Program Library HOWTO(1)
  4. 数组和指针:超过一半的数字;水王发帖
  5. pytorch之各类图像库的图片读写方式
  6. torch.ones,normal,max
  7. opencv中很有趣的仿射变换(Affine Transformation)
  8. 吴恩达神经网络和深度学习-学习笔记-28-端到端的深度学习(end-to-end deep learning )
  9. c++通过pybind11制作模型python接口,生成python调用包
  10. python后台架构Django教程——templates模板