return false影响事件冒泡
来源:互联网 发布:mysql insert 编辑:程序博客网 时间:2024/06/16 05:09
在编写zepto, jquery的事件时,回调函数体中不要使用 return false ,
这将阻止事件冒泡,会导致其他的函数捕捉不到事件。
比如前一阵,某位同事无意中修改了一个tap事件导致该元素无法触发公共的统计事件,而全不知其影响。
栗子在此
//html:<a class="related" data-gjalog="ge">一个按钮</a>
//业务代码:$('.related').on('tap', function(){ var target_url = $(this).attr('data-targeturl'); if(!target_url){ return false; } $.getJSON(target_url + '&callback=?');});
//受影响的公共组件:$('body').on('tap', '[data-gjalog]', function (e) { ...});
解决办法
在编写zepto, jquery的事件时,只要不是return false, return 任何值都不会阻止事件冒泡;
线上已经修复的方式将return false改成return.
BTW, 采用return来控制条件语句的写法可读性不高,建议使用if, else, 三目运算表达式或改为:
$('.related .recomend3g a').on('tap', function(){ var target_url = $(this).attr('data-targeturl'); target_url && $.getJSON(target_url + '&callback=?');});
Raw Javascript
延伸实验原生javascript不会受到return false的影响:
var body = document.getElementsByTagName("body")[0];var a = document.getElementsByTagName("a")[0]; body.onclick = function(ev){ var ev = ev || window.event; var target = ev.target || ev.srcElement; if(target.nodeName.toLowerCase() == 'a'){ console.log('js raw delegate event'); }}a.onclick = function(){ console.log('js raw event'); return false;}
运行结果:两个回调函数都会完全执行并输出;
0 0
- return false影响事件冒泡
- 防止点击事件冒泡 return false
- 阻止事件冒泡和组阻止默认事件和return false的区别
- 关于return false的事件
- JQUERY中的事件处理:return false、阻止默认行为、阻止冒泡以及兼容性问题
- 阻止默认和冒泡事件,认清event.preventDefault()、event.stopPropagation()和return false区别
- return false防止默认的事件行为
- return false
- return false
- return ture & return false
- js中事件使用return;return false;return true的区别
- return,return false,return true
- onclick 判断后决定是否执行 onserverclick 事件 (return false)
- 服务器端控件OnClientClick事件return false不回传服务器
- 由href return false 来看阻止默认事件
- onTouch事件,return true或false的意义
- jQuery事件处理: 别再乱用“return false”了
- jQuery事件处理return false与event.preventDefault()
- 【程序1】组成互不相同且无重复数字的三位数
- Eclipse插件安装4种方法
- 大数据工程师(开发)面试系列(7)
- 2017Google Study Jams之L1Android Studio的安装与生日贺卡的实现
- C++ goto使用例子
- return false影响事件冒泡
- AngularJS的路由 系列
- LINUX滴水穿石
- 线程
- 有界线性算子和连续线性泛函
- Visual Studio 20周年软件趋势随想
- 冬夜
- ac3/eac/eac+atmos编码同步帧参数概述
- jeesite快速开发平台(六)---代码生成器的应用