使用innerHTML造成之前的绑定事件丢失

lawrendc 2011-12-29 06:04:14
Hi, 各位高手,最近遇到一个问题,之前使用javascript 对控件进行绑定的事件,但通过innerHMTL存储到一个变量里边去之后,再调用innerHTML进行显示时,发现之前绑定的所有事件都出现了丢失,请问怎么解决???
...全文
539 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
greency 2011-12-31
  • 打赏
  • 举报
回复
dom渲染和js不同步造成的,修改事件绑定试下
诺维斯基 2011-12-31
  • 打赏
  • 举报
回复
在你要加入innerHTML的地方再加一个div,给个id.

然后把这个innerHTML放在这个div中,

可以不?
不耐烦 2011-12-31
  • 打赏
  • 举报
回复
事件委派~ 很简单的
lawrendc 2011-12-31
  • 打赏
  • 举报
回复
谢谢,各位的解答
  • 打赏
  • 举报
回复
楼主说的是AJAX里返回JS事件的问题吧。这个以前在做的时候遇到过。是用下面的方法解决的:

在返回的<script>里加个属性 <script defer="defer" >...</script> 这样就行了。

如果不是这个问题,就是对INNERHTML赋值导致的事件没有重新绑定的问题,那就如上所说,赋值之后重新绑一下就是了。
licip 2011-12-30
  • 打赏
  • 举报
回复
+1[Quote=引用 2 楼 p2227 的回复:]
参考 jQuery.live() 的实现,把事件绑定到根元素。
[/Quote]
lawrendc 2011-12-30
  • 打赏
  • 举报
回复
其实我想实现的是在Ajax里如何让浏览器的前进后退可用,但参考了网上的解决方案之后,发现我直接生成的代码里链接的响应事件全部丢失,调试发现,使用innerHTML根本不能把attachEvent一并保留下来
lawrendc 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hch126163 的回复:]

innerHTML 后重新绑定事件

或者直接把事件写入html 如 innerHTML="<div onlick='fun()'></div>";
[/Quote]

直接这样写的话 不能绑定多个事件吧 而且我还需要传参数进去的
hch126163 2011-12-30
  • 打赏
  • 举报
回复
innerHTML 后重新绑定事件

或者直接把事件写入html 如 innerHTML="<div onlick='fun()'></div>";
zell419 2011-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 p2227 的回复:]

参考 jQuery.live() 的实现,把事件绑定到根元素。
[/Quote]
+1 或者更新完内容后 再次执行绑定事件 。
p2227 2011-12-29
  • 打赏
  • 举报
回复
参考 jQuery.live() 的实现,把事件绑定到根元素。
whdrs 2011-12-29
  • 打赏
  • 举报
回复
发代码

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧