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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
IE和Mozilla的兼容性汇总event
Aug 12 Javascript
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
select组合框option的捕捉实例代码
Sep 30 Javascript
js 获取Listbox选择的值的代码
Apr 15 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
JS全角与半角转化实例(分享)
Jul 04 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
Vue基于localStorage存储信息代码实例
Nov 16 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
Zend 输出产生XML解析错误
2009/03/03 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
php日期操作技巧小结
2016/06/25 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
js闭包实例汇总
2014/11/09 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
Vue中使用vux的配置详解
2017/05/05 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python监控进程脚本
2018/04/12 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python中turtle库的使用实例
2019/09/09 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
Django中ORM的基本使用教程
2020/12/22 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
综合测评自我鉴定
2013/10/08 职场文书
2014年大学生自我评价
2014/01/19 职场文书
党员群众路线承诺书
2014/05/20 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书