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 相关文章推荐
写JQuery插件的基本知识
Nov 25 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
javascript中JSON对象与JSON字符串相互转换实例
Jul 11 Javascript
jQuery实现的网页左侧在线客服效果代码
Oct 23 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
May 08 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
详解http访问解析流程原理
Oct 18 Javascript
深入浅析JS中的严格模式
Jun 04 Javascript
JavaScript创建对象的四种常用模式实例分析
Jan 11 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
24个ES6方法解决JS实际开发问题(小结)
May 31 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
5.PHP的其他功能
2006/10/09 PHP
PHP入门
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
为什么需要版本控制
2016/10/28 面试题
应届生程序员求职信
2013/11/05 职场文书
单位介绍信范文
2014/01/18 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
行政文员岗位职责
2015/02/04 职场文书
团员个人年度总结
2015/02/26 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS