js阻止事件追加的具体实现


Posted in Javascript onOctober 15, 2014

有些时候可以使用 e.stopPropagation(); e.preventDefault();来阻止事件冒泡,和默认事件的执行。但不能阻止事件的追加。

什么情况下要阻止事件的追加呢?

比如:

点击“结账”,这样的操作时,结账本身有自己的事件,但结账前要判断是否登录。

我们可能会这样写:

Js代码

if(isLogin){ //判断是否登录 

console.log("没有登录") 

}else{ 

//结账相关代码 

}
如果点击“我的主页”也有登录判断

登录判断代码
if(isLogin){ //判断是否登录 

console.log("没有登录") 

}else{ 

//个人中心 

}

如果还有更多的登录判断。是不是就会有更多像上面的代码呢?后来我发现stopImmediatePropagation()这个方法, 阻止事件追加。上面的问题就不是问题了。

重要:.确保登录判断事件是第一个绑定的事件。

Demo代码

<!DOCTYPE html> 

<html> 

<head lang="en"> 

<meta charset="UTF-8"> 

<title>demo</title> 

<script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script> 

</head> 

<body> 
<a href="#" class="bill isLogin">结账 </a> 


<ul> 

<li class="a1 isLogin">加入收藏夹</li> 

<li class="a2 isLogin">他人支付</li> 

<li class="a3">加入购入车</li> 

<li class="a4 isLogin">我的主页</li> 

</ul> 

<script> 

//最先绑定 

$(".isLogin").on("click", function (e) { 

if(true){ //登录判断 

alert("没有登录"); 

e.stopImmediatePropagation(); 

} 

return false; 

}); 

$(".bill").on("click",function(){ 

alert("结账相关内容!"); 

}); 

$(".a1").on("click",function(){ 

alert("a1"); 

}); 

$(".a2").on("click",function(){ 

alert("a2"); 

}); 

$(".a3").on("click",function(){ 

alert("已加入购物车"); 

}); 

$(".a4").on("click",function(){ 

alert("有登录判断"); 

}); 


</script> 

</body> 

</html>

其实,jquery给我们提供了查看事件的方法$._data($('.isLogin').get(0)),打开firebug,在控制台输入。
Js代码

$._data($('.isLogin').get(0))

会看到如下:

Js代码

Object { events={...}, handle=function()}

点击可以看到事件数组,方便查看元素上绑定了什么样的事件。

Javascript 相关文章推荐
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 Javascript
js中有关IE版本检测
Jan 04 Javascript
JS的replace方法详细介绍
Nov 09 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
JQuery中DOM事件绑定用法详解
Jun 13 Javascript
js如何打印object对象
Oct 16 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
jQuery中DOM节点删除之empty与remove
Jan 20 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 #Javascript
原生的html元素选择器类似jquery选择器
Oct 15 #Javascript
用原生JS获取CLASS对象(很简单实用)
Oct 15 #Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 #Javascript
javascript模拟实现ajax加载框实例
Oct 15 #Javascript
jquery幻灯片插件bxslider样式改进实例
Oct 15 #Javascript
微信分享的标题、缩略图、连接及描述设置方法
Oct 14 #Javascript
You might like
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
python创造虚拟环境方法总结
2019/03/04 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
初一英语教学反思
2014/01/11 职场文书
材料加工工程求职信
2014/02/19 职场文书
作文评语大全
2014/04/23 职场文书
工作岗位职责范本
2015/02/15 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
MySQL数据库事务的四大特性
2022/04/20 MySQL
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python