Jquery 如何实现 Ajax 自动更新 table,并且不影响 js 事件

2016-06-03 22:28:27 +08:00
 sbmzhcn
需求:

点击编辑按钮,自动弹出遮罩层,可以更新新建一条记录,当这一条记录新建完成后,遮罩层在不点击关闭的情况下,遮罩层后面的 table 可以实现自动更新。

遮罩层 使用的是 jquery confirm

但自动更新 Table 搞不定,使用 ajax 更新当前的 html 也是可以,但如果更新后, table 绑定的 js 事件却无法使用了。请问有什么好的办法解决吗?

如果使用的是 datatables js 如何做呢?
3389 次点击
所在节点    jQuery
15 条回复
Jaylee
2016-06-03 22:31:14 +08:00
请搜索“事件委托”
emric
2016-06-03 22:33:17 +08:00
事件委托
jugelizi
2016-06-03 22:50:52 +08:00
$('table').on('click','td',function(alert(1)))
sbmzhcn
2016-06-03 23:50:15 +08:00
@jugelizi 你这个也太简单了 这么容易我不会问了。

这个问题看似简单 其实也没那么简单
hxtheone
2016-06-04 00:49:55 +08:00
刷新 table 后重新绑定事件?
br00k
2016-06-04 10:05:12 +08:00
如果元素是动态加入的,事件绑定用$(document).on("click",".table",function(){})
Arrowing
2016-06-04 10:31:29 +08:00
具体问题具体分析
1 、你重新改变的 html 最好不要改变到你绑定事件的元素上
2 、假如 1 没办法做到,那就重新再绑定一次事件
azh7138m
2016-06-04 11:40:59 +08:00
@sbmzhcn 3L 这个就是事件委托,没有问题
shawshi
2016-06-04 12:01:12 +08:00
理论上 js 添加代码,最好使用事件委托实现,如果没有实现,请检查一下代码以及绑定的事件。只看描述,不一定能完全回答正确
sbmzhcn
2016-06-04 12:28:49 +08:00
@azh7138m 我这样用了,不行。
sbmzhcn
2016-06-04 12:29:57 +08:00
@sbmzhcn 当时不懂什么委托,但的确发现这样写,后面的 js 更改,也能监听到事件,但对于某些情况好像不行。比如我说的 datatables js.
azh7138m
2016-06-04 14:47:48 +08:00
@sbmzhcn 那是 table 变了,你可以再往上一层,直接用 document 也行 就是 6L 那样
jydeng
2016-06-04 18:50:45 +08:00
6 楼那样应该可以,事件都绑定在 document 上,更新 table 不影响的。
warjiang
2016-06-05 09:23:15 +08:00
不要直接给每行绑定事件,直接把每行上的事件委托到 table 来执行, table 上相应事件的冒泡,做下简单判断就可以了
可以参考下这个 http://www.spotty.com.cn/archives/34/
Jakesoft
2016-06-05 13:42:49 +08:00
三楼这个可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283361

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX