【发布时间】:2020-01-30 02:20:20
【问题描述】:
昨天我遇到了一个问题,我分配的 .on('click') 事件处理程序无法正常工作。原来这是因为我试图在该元素存在于 DOM 之前应用那个 .on('click'),因为它是通过 AJAX 加载的,因此当 document.ready() 到达那个点时它还不存在。
我用一个尴尬的解决方法解决了这个问题,但我的问题是,如果我要在 ajax 加载的内容中放置一个 <script> 标记并在其中放置另一个 document.ready(),那么第二个 document.ready() 是否只会被解析一次ajax 内容加载完成了吗?换句话说,它是否认为单独加载的 ajax 内容是另一个 document,如果是这样,那么在该 ajax 加载的 HTML 中还有另一个 document.ready() 是否像我认为的那样工作?
或者;处理这种情况的更好方法是什么? (需要将事件监听器附加到 document.ready() 上尚不存在的 DOM 元素)
【问题讨论】:
-
对于事件处理程序,使用事件委托。对于其他任何事情(例如插件初始化),请使用 AJAX 调用的回调函数。
标签: jquery event-handling addeventlistener document-ready