码迷,mamicode.com
首页 > 其他好文 > 详细

on绑定阻止冒泡失败

时间:2015-06-12 19:19:49      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

使用zepto库,有如下dom

技术分享
1 <div id="J_parent">
2         <a href="#">
3             <span>点我有惊喜</span>
4         </a>
5 </div>    
View Code

以上div内的节点是后续生成的,通过on绑定事件:

技术分享
1 $(‘#J_parent‘).on(‘tap‘,  ‘span‘, function(e){
2     e.preventDefault();
3     e.stopPropagation();
4     console.log(‘span‘);
5 });
6 
7 $(‘#J_parent‘).on(‘tap‘,  ‘a‘, function(e){
8     console.log(‘a‘);
9 });
View Code

此时点击span区域,控制台会打出:

‘span‘

‘a‘

阻止冒泡失败,此时可以通过在a的绑定事件里判断e.target,如下:

技术分享
1 $(‘#J_parent‘).on(‘tap‘,  ‘a‘, function(e){
2     if(e.target.nodeName == ‘SPAN‘){
3         return;
4     }
5     console.log(‘a‘);
6 });
View Code

这样点击span区域,控制台会打出:

‘span‘

 

ps:

移动网页中click较tap有延迟;

target与currentTarget的区别,如以上a的绑定事件代码中,如果点击span区域,此时e.target为span,而e.currentTarget为a。更专业的说明:

target在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。只有当事件流处在目标阶段的时候,两个的指向才是一样的, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(一般为父级)。

on绑定阻止冒泡失败

标签:

原文地址:http://www.cnblogs.com/jue-star/p/4572343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!