zepto.js中tap事件的阻止冒泡方法

tap 事件并非原生 JavaScript,所以 e.stopPropagation() 方法并不管用,可以采用下面的方法实现阻止冒泡的效果。

在父元素的 tap 事件中加入判断条件 e.target === this ,满足条件再执行相关的操作,案例如下,原理后面说。

<ul>
  <li></li>
</ul>
$("ul").on("tap", function (e) {
  if (e.target === this) {
    // 要执行的相关操作放到这里面
  }
})

$("li").on("tap", function (e) {
  e.stopPropagation(); // 这个方法不管用
})

原理

你需要理解事件触发对象 target 和 this 有何不同。

事件触发时,事件对象会作为第一个参数自动传入事件函数,习惯上写作 e,e 中有一个成员 target,这是一个 DOM 对象,指向触发此事件的 DOM 元素,通俗的说,对于 tap 事件你点的是哪个元素,target 就是哪个元素。

this 在事件函数中指向绑定此事件的 DOM 对象,即使使用了事件委托,this 也是指向子元素,this 的指向是不会改变的。

在不发生事件冒泡的情况下,e.target 和 this 指向同一个 DOM 对象,如果事件是通过冒泡触发的,e.target 会变成 this 的子元素,所以可以通过 e.target === this 来判断事件是不是通过冒泡触发的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值