用原生 js 如何获取到动态添加的元素,并绑定事件

2014-10-02 04:14:00 +08:00
 edire
6039 次点击
所在节点    问与答
10 条回复
yyfearth
2014-10-02 04:57:52 +08:00
你的意思是像用jquery一样么?
那就用querySelector/querySelectorAll获取
然后用addEventListener就好了啊
当然 老IE 的话就要用其他办法了
不然jquery就没有存在的意义了 除了API方便一些
airyland
2014-10-02 05:16:40 +08:00
1楼不要误导别人。
请搜索: javascript delegate
emric
2014-10-02 05:42:47 +08:00
问的应该是事件委托.
硬要实现这个功能 DOM3 有 DOM 修改事件.
yyfearth
2014-10-02 08:36:48 +08:00
LZ没说这些要移除啊

动态添加或者移除 那么就是用Delegation
实现的话 其实就是绑定父元素的event
然后通过e.target进行判断 可以用el.matches/matchesSelector
belin520
2014-10-02 08:41:15 +08:00
事件委托on
其实就是事件的冒泡
一点击事件在dom节点冒啊冒,你在ducument 上面捕获它,处理。
$(document).on('click','#header',func);
这个header就不用管是现在还是未来的元素,因为事件是绑定在document上面
jsonline
2014-10-02 08:43:54 +08:00
考点是闭包
jakwings
2014-10-02 14:16:58 +08:00
用 MutationObserver。
robbielj
2014-10-02 14:19:51 +08:00
嗯,就是MutationObserver
这个库大概就能满足lz要求了
https://github.com/uzairfarooq/arrive

不依赖jq
yetone
2014-10-04 10:42:14 +08:00
楼上都在说啥-_-||
利用事件冒泡,把事件绑定在 document 上,在回调函数里判断事件的 target 就行了。
各位就别逗楼主了
edire
2014-10-19 23:30:47 +08:00
九楼正解。

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

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

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

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

© 2021 V2EX