位置: 编程技术 - 正文

关于动态生成dom绑定事件失效的原因及解决方法(动态生成类对象)

编辑:rootadmin

推荐整理分享关于动态生成dom绑定事件失效的原因及解决方法(动态生成类对象),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:动态生成需要关注哪几个方面,动态生成类,动态生成对象,动态生成xml,动态生成对象,动态生成对象,动态生成类,动态创建dom方式,内容如对您有帮助,希望把文章链接给更多的朋友!

之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试了一下:

1. 事件失效的原因:

(1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了

(2)同样,当你使用var aa = document.getElementsByTagName("动态生成的元素");来获取动态生成的元素的时候也是获取不到的,因为网页只会执行一次初始化绑定,之后动态生成的dom元素也是监测不到的。

2. 解决办法:

(1)在每一个动态生成的地方都再绑定多一次事件,比如这个博客里面的例子

(2)把bind改用live,因为live是实时监测的,对于新增的dom元素也是有效的(因为不断去绑定、判断,所以可能会影响Web性能问题)

关于动态生成dom绑定事件失效的原因及解决方法(动态生成类对象)

(3)把bind改用delegate,因为delegate是实时监测的。

(4)在jquery1.7 起版本用on替代了bind()、live() 和 delegate() 方法。

3. 关于最近遇到的事件失效的原因:在原本的网页中(代码可见 最后的解决办法:先获取table,然后再绑定table的click事件(因为table是在原本已经存在的dom元素),然后当点击事件触发的时候再捕获事件的target(比如点击table里面的button,这个时候因为已经动态生成button并append进去table里面了,所以button是存在的,此时target指的是button),然后再进行相应的操作。

注意:在这里注意两个问题:

(1)table里面的元素是已经添加进入table里面了的,所以点击那个button的时候,e.target获取到的就是button

(2)为什么已经将button这些元素添加进入table里面,可是还是没能获取到呢,因为是init()这个函数初始化的时候获取table里面的button,可是此时还未进行任何操作,所以获取到的就是空,所以没绑定任何元素。

上面需要注意的两个问题要分清楚,这个是问题的关键。

5.关于bind:每次绑定事件之后事件会一直绑定着,除非用unbind解绑之后再重新绑定,要不然事件会一直存在,所以这就是为什么在做项目的时候,有时候ajax请求的结果会出现1,2,4,8这样叠加,是因为如果用了bind,每次触发事件都会绑定一次操作,所以触发第一次的时候,ajax请求一次;第二次的时候,ajax请求1+1=2次;第三次就是1+2+1=4次;第四次就是1+2+4+1=8次,以此类推。所以如果利用bind绑定事件的话,要先unbind解绑元素原本有的事件再绑定事件,才不会导致ajax请求多次。

以上这篇关于动态生成dom绑定事件失效的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

动态生成的DOM不会触发onclick事件的原因及解决方法 最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击展开评论后获取该微博的所有评论。这里使用了动态加载的spanmid='′class='get_com

jquery自动补齐功能插件flexselect用法示例 本文实例讲述了jquery自动补齐功能插件flexselect用法。分享给大家供大家参考,具体如下:这几天正在做一个东东。需要用到自动补齐的功能。也就是sele

jQuery调用Webservice传递json数组的方法 本文实例讲述了jQuery调用Webservice传递json数组的方法。分享给大家供大家参考,具体如下:Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步

标签: 动态生成类对象

本文链接地址:https://www.jiuchutong.com/biancheng/384138.html 转载请保留说明!

上一篇:jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法(jquery easyui插件)

下一篇:动态生成的DOM不会触发onclick事件的原因及解决方法(动态生成xml)

  • 个人是否可以申请精神司法鉴定
  • 未投入使用的固体废物
  • 折旧费属于什么科目
  • 增值税发票税控开票软件怎么下载
  • 财报中计提
  • 银行手续费进项税怎么入账
  • 增值税抵扣凭证装订要求
  • 个体户定期定额是什么意思
  • 企业所得税减免政策2023
  • 房地产企业配套设施的核算内容
  • 票据贴现利息怎么开发票
  • 货币资金包括应收票据和应收账款吗
  • 库存产品亏本销售账务处理
  • 企业职工福利费标准是什么
  • 机关单位伙食
  • 免税商品销售要缴税吗
  • 企业拿到产权证后是否还需要缴纳土地使用税呢?
  • 国税的应交税款在地税的财务报表上怎么填?
  • 个体户没有三证合一,年检
  • 金融企业三大使命是什么
  • 个人所得税生产经营所得投资者减除费用
  • 股权成本计算公式rd
  • 法人名下两家公司,客户买货可以用另外一个公司开票吗
  • 营改增的纳税人
  • 固定资产盘亏盘盈账务处理
  • 发票和款未付可以抵扣吗
  • 计提缴纳增值税怎么做账
  • 金银制成的金银币及摆件是否征收消费税?
  • 什么是财政代管资金
  • 右击任务栏启动怎么关闭
  • 苹果15手机价格和图片颜色
  • 借款人约定分期还款中途可以起诉吗
  • 出租设备的租金计入哪个科目
  • 营业利润投资收益是借方还是贷方
  • 外汇差额核销条件
  • 公司制作横幅计入什么科目?
  • vue mocha
  • 羊羊 过好
  • python读取TXT文件代码
  • 慈善组织接受股票捐赠流程
  • 高价值配件用入固定资产吗
  • 出售固定资产如何申报企业所得税
  • 施工图审查费属于什么费用类别
  • centos编译运行c程序
  • 员工意外伤害保险可以抵扣进项税吗
  • 计提工资包含个人扣款吗
  • 债券投资的会计科目有哪些
  • 应交税费会计分录完整版
  • 一人有限公司和个人独资企业区别
  • 小规模普通发票怎么做分录
  • 建筑企业印花税应税凭证名称
  • 电商公司不用交税吗
  • 一家新成立的贸易企业
  • 房地产开发打桩
  • 预付卡销售和充值怎么做账
  • 房地产销售折让怎么开票
  • 加班餐费报销计入什么费用
  • 收到投资款现金流量
  • 财务报表未备案可以不填吗
  • 公司开具电子发票是否取消纸质发票开具
  • 建账的内容一般包括什么
  • mysql 修改密码后 unknown error 1820
  • win10系统怎么修改用户名称
  • xp 指定的域不存在,或无法联系
  • win8系统如何查看电脑mac物理地址
  • windows8如何关闭杀毒软件
  • win8.1c盘满了怎么办
  • unity怎么打光
  • css不需要编译
  • shell备份文件脚本
  • 批处理设置ip地址配置的dns
  • apk文件怎么使用
  • python编写下载器
  • node.js介绍
  • cocos引擎教程
  • javascriptfor循环嵌套
  • 前端闭包函数
  • 乌鲁木齐市公立幼儿园有哪些
  • 扶贫绩效目标申请怎么写
  • 建筑安装工程承包条例还有效吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设