美文网首页
事件委托的应用及其兼容

事件委托的应用及其兼容

作者: 慕慕君 | 来源:发表于2019-01-16 18:12 被阅读0次

最近在项目中遇到一个问题:

优惠券通过异步调用后台接口生成,其中有一个点击交互,点击查看详情会出现优惠券详情,内容如下

默认情况 点击展开后是这样

乍一看简直so easy,直接给这个dom绑定一个点击事件就ok了,

$(".act-body-body").click(function(){

      $(this).toggleClass('show').parents('.act-body').next().slideToggle();

})

呵呵,so naive,意料之外又情理之中地失效了,懵逼了一会才反应过来,绑定点击事件在优惠券渲染之前进行了,导致这个绑定失效。

而目前的项目也没有用vue等一系列框架来维护,完全是原生js+少量jq,思量一番后我决定用事件委托来实现这个功能。


事件委托是什么意思呢?JavaScript高级程序设计上讲:

事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

也就是说,我们可以利用事件委托这个特性来绑定target的父级事件,通过父级点击事件的冒泡特性来触发到目标元素的点击事件。

所以我直接把点击事件绑定到了document,通过document来委托代理这个点击事件:

$(".document").on('click','.act-body-body',function () {

     $(this).toggleClass('show').parents('.act-body').next().slideToggle();

});

结果在网页测试没有问题,但在用ios手机测试打开仍然失效,后来经过排查,发现ios系统使用事件委托时,必须要绑定在其直接父级上,否则不会生效,因此我把ducument改为其直接父级,这个问题完美解决。

比较有代表性的兼容性问题,记录一下。

相关文章

  • 事件委托的应用及其兼容

    最近在项目中遇到一个问题: 优惠券通过异步调用后台接口生成,其中有一个点击交互,点击查看详情会出现优惠券详情,内容...

  • JavaScript进阶教程-4.dom零级 二级事件基础和实战

    事件基础和事件委托 事件委托 事件的兼容性问题:1、事件对象本身的获得方式不同,IE是用全局的window.eve...

  • 事件绑定、事件冒泡与捕获

    一、事件绑定事件绑定又称事件委托,事件代理,可以给同一个div绑定多个事件 非IE: IE: 绑定事件兼容写法:(...

  • 细读 JS | 事件详解

    本文将会介绍事件、事件流、事件对象、事件处理程序、事件委托、以及兼容 IE 浏览器等内容。 一、概念 就本文一些“...

  • React合成事件

    为什么需要合成事件 兼容浏览器监听写法 避免大量节点绑定事件占用内存,将事件委托到document上,有统一的事件...

  • 事件对象及其兼容处理

    事件对象 把匿名函数定义的部分当做一个值赋值给oDiv的点击行为(匿名函数的函数表达式),当触发#div1的点击行...

  • 11-11

    1:事件委托又叫事件代理: 2:节点:节元素标签、文本元素标签、分组元素标签 3:目标元素 兼容处理 : 4:im...

  • 事件委托

    ------------------事件委托----------------- 事件: 事件委托: 原理: 冒泡 ...

  • web前端面试题@六(事件委托)

    *说到事件委托,我们首先先要知道什么是事件委托—— · 那么什么是事件委托呢??? JS里的事件委托就是当事件...

  • 前端常见面试题(十一)@郝晨光

    什么是事件委托?为什么要用事件委托? 什么是事件委托? 事件委托,又称事件代理,就是将元素的事件处理交由父元素或者...

网友评论

      本文标题:事件委托的应用及其兼容

      本文链接:https://www.haomeiwen.com/subject/uqamdqtx.html