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 import css实例代码
Jul 18 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
实例解析angularjs的filter过滤器
Dec 14 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
关于vue中 $emit的用法详解
Apr 12 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
用原生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 PDO函数库详解
2010/04/27 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
php中的比较运算符详解
2013/10/28 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python中文件的读取和写入操作
2018/04/27 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
司机岗位职责
2013/11/15 职场文书
和平主题的演讲稿
2014/01/12 职场文书
法定代表人资格证明书
2015/06/18 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
Flink 侧流输出源码示例解析
2022/09/23 Servers