美文网首页
动态生成dom事件失效

动态生成dom事件失效

作者: sunningcarry | 来源:发表于2017-07-13 20:42 被阅读115次
image.png

问题来由

最近在项目中有涉及到排序后回写按钮元素,按钮的事件失效。
这可以分为一类问题:重写元素/动态生成元素后,事件的失效。
想给每一行的 td>button添加点击事件

            <td class="action">
                       <button class="mark" name="ignore" 
                        </button>
            </td>

给表格数据排序后,表格中的按钮事件失效。追溯了一下原因,排序后,初始化事件无法获取到button.
类似问题:

  • 动态增加删除子节点
  • 表格排序后的节点

解决办法

原理是利用冒泡实现事件委托,也就是给生成节点的父节点预先绑定事件。

jq的解决办法:

$('.tablesort').on('click','.mark',function () {})
这里提一下:
早期对页面上后期加载的动态元素,赋事件或值的时候,是使用live的.
由于效率比较低(其实数据不多也感觉不出来),后面使用delegate委托来代替了,
再后面,1.7以后使用on 来代替delegate了. live,delegate在新版本中都还可以用
网上有很多教程是利用 $('.action .mark').live('click',function () {}),但是现在不建议使用
参考

原生js

http://www.jianshu.com/p/88164e43d7b3

  • 使用这个事件对象给父节点绑定事件
  • 当事件触发的时候判断事件源对象是否是按钮
  • 如果是按钮的话再执行事件行为

相关文章

  • 动态生成dom事件失效

    问题来由 最近在项目中有涉及到排序后回写按钮元素,按钮的事件失效。这可以分为一类问题:重写元素/动态生成元素后,事...

  • 问题:动态生成的DOM无法绑定事件 2018-01-16-已解决

    动态生成的DOM无法绑定事件 (1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不...

  • vue动态生成html事件失效

    背景    项目开发中有这样一个需求,地图(高德)标记点点击需要展示标点信息框,标点信息框中有个点击详情的按钮,按...

  • jQuery和zepto

    1, 有jQuery动态生成的dom, 需要用live绑定事件, 或者用on live绑定: on绑定: 要绑定到...

  • js无法动态生成的Dom元素

    前言 项目中往往需要动态生成Dom元素,如ajax动态取值后再生成元素,或者通过for循环生成一系列dom元素等等...

  • layui2.0.2数据表格工具条失效

    使用方法级渲染动态表格时,无法设置生成的table的lay-filter属性,所以导致工具条监听事件失效table...

  • jQuery 动态绑定

    这是在项目过程中所遇到的一个问题,给 JS 动态生成的元素绑定事件失效,代码如下所示: 其中,more-btn 按...

  • js动态生成html重复绑定事件失效

    在js里面,click事件是存在重复绑定的情况的比如说,一个函数会执行多次,你每次都把绑定了click事件,那么他...

  • js绑定事件到动态生成的html

    正常情况下绑定点击事件可能是这样的: 现在有一段动态生成的html,需要绑定事件 用上面的方法就失效了,因为绑定事...

  • VUE生成dom后执行函数

    需求,动态生成列表数据,列表中有echarts表格 echarts渲染图形时,需要当然dom已经生成 调用API获...

网友评论

      本文标题:动态生成dom事件失效

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