关于innerHTML后丢失动态绑定的EVENT问题

 用innerHTML取出一段内容后再innerHTML回去,那么原来动态绑定的事件就会丢失,如:
html:

代码如下:

<body><div id='d1'>点击</div></body>

script:

代码如下:

document.getElementById('d1').onclick=function(){alert(1)};
var html=document.body.innerHTML;
document.body.innerHTML=html;

这段代码执行后点击d1是没有任何反应的。
解决方法:
把onclick绑定到父元素,利用冒泡原理,判断当前元素是否为d1,若为d1则执行

代码如下:

document.body.onclick=function(e){
var e=e||event;
var current=e.target||e.srcElement
if(current.id=='d1'){alert(1)}
}

这也是折中的方法,肯定会影响效率的。 

时间: 2024-12-02 17:51:05

关于innerHTML后丢失动态绑定的EVENT问题的相关文章

关于innerHTML后丢失动态绑定的EVENT问题解决方法_javascript技巧

用innerHTML取出一段内容后再innerHTML回去,那么原来动态绑定的事件就会丢失,如: html: 复制代码 代码如下: <body><div id='d1'>点击</div></body> script: 复制代码 代码如下: document.getElementById('d1').onclick=function(){alert(1)}; var html=document.body.innerHTML; document.body.inn

迅龙数据恢复软件电脑中毒后丢失的文件恢复方法

  方法/步骤 用杀毒软件扫描电脑,把病毒清理后再重启,以确保病毒完全清除. 在网上搜索迅龙数据恢复软件,下载一个免费版本的,根据安装提示,进行下载安装. 打开软件,开始运行.点击万能恢复.这个功能比较齐全,电脑中毒后丢失的文件可以用这个功能进行深度扫描.如下图所示: 选择文档所在的位置进行定位扫描. 文档所在的位置是D盘,点击本地硬盘D,再点击"下一步",软件就会进入扫描过程. 软件正在深度扫描丢失的文件,大家要耐心等待一下.下面是扫描过程截图: 扫描完成了.点击需要恢复的WORD

css-jquery动态设置的效果刷新后丢失

问题描述 jquery动态设置的效果刷新后丢失 解决方案 jQuery的一点动态效果基于jQuery的动态星星评分效果 解决方案二: 这个登录的用户信息的css想要刷新之后也存在,你就应该在后台把登录用户信息放入session中,前台通过放一个隐藏的input,通过获取session里面的user,在js最上面写if($("#user").val()!=null && $("#user").val()!=''&&$("#us

数据丢失-arcgis裁剪后丢失怎么办

问题描述 arcgis裁剪后丢失怎么办 在arcgis裁剪后数据丢失了,裁剪完以后什么都没有,有没有什么办法?急·急·急·急·急·急·急·急·急·急·急·急·

重视数据备份 恢复RAID5故障后丢失的数据

很多企业的网管都认为 RAID5很少出故障,即使出了故障,RAID5本身也有强大的容错能力,因此往往不太重视http://www.aliyun.com/zixun/aggregation/14344.html">数据备份.这就造成了RAID出现故障时就是大灾难.要知道天有不测风云,人有旦夕祸福,那么,在没有备份的情况下,如果RAID5出现故障,我们该如何恢复数据呢?本文将通过一个实例来讲解,如何恢复RAID5故障后丢失的数据. RAID5发生故障的原因可能有很多种,或者是RAID控制器故障

debug模式-Qt程序release后丢失槽信号 ,debug下则能正常运行

问题描述 Qt程序release后丢失槽信号 ,debug下则能正常运行 在debug情况下生成的程序可以运行,但是release情况下生成的程序单击按钮没有响应,然后窗口提示QMetaObject::connectSlotsByName: No matching signal for on 解决方案 确定依赖的dll文件都已经用release编译过.并拷贝在执行目录下.

html-jQuery append 添加标签后丢失css样式

问题描述 jQuery append 添加标签后丢失css样式 在后台动态生成了一串html代码,代码中包括了几个div和几个table,其中div用了easyui-panel的样式,然后用jQuery的append方法动态加载到jsp的某个div标签上,发现加上的标签没有展示成easyui-panel的样式,如果直接把拼接好的html代码粘贴到jsp中就没有问题,请问这个问题要如何解决? 解决方案 用api初始化,动态添加的除非在dom ready前添加,放到$(function(){..})

html控件动态加载innerhtml后,FindControl找不到里面的控件

问题描述 <divid="dv_loadHtml"runat="server"></div>如上图的html控件,在后台动态加载innerhtml后比如:dv_loadHtml.InnerHtml="<divid="GoodsYaoqiu_Pal"runat="server"></div>",想访问里面的控件比如用:dv_loadHtml.FindContro

北京市邮政公司回应地摊包裹标准:邮件系综合服务商取回后丢失

今日上午,北京市邮政公司就近日"河北霸州出现地摊出售未开封国际邮件"事件向新京报独家通报回应.通报称,邮政公司确认被售卖邮件为境外邮政无法投递退回的未开封邮政国际小包退件,系综合服务商燕文公司从北京邮政公司取回退件运输途中发生遗失.燕文公司已就此事公开致歉. 北京市邮政公司:邮件系综合服务商取回后丢失 通报称,经北京邮政公司多方调查,确认被售卖邮件为境外邮政无法投递退回的未开封邮政国际小包退件,根据调查认定被售卖邮件为燕文公司交寄的平常国际小包邮件,因境外无法投递被退回,燕文公司在从北