javascript - 有没有办法在 HTML 元素出现在页面上时立即将事件处理程序附加到该元素

标签 javascript jquery jquery-events

我不想等到整个 HTML DOM 准备好。请注意,我不是在谈论动态加载的 HTML 元素。我说的是 HTML 中但尚未渲染的元素。

最佳答案

三个想法:

  1. 在 HTML 中使用属性,如 onclick="foo()" 。该规定将立即生效。

  2. 您可以放置​​ <script>紧跟在 HTML 中嵌入的 HTML 元素之后的标记,并让该脚本添加事件处理程序。位于脚本之前的所有 DOM 元素都保证被解析并准备就绪。

  3. 您可以通过最初隐藏元素(内联样式规范或 CSS),然后等到它位于 DOM 中,运行脚本来安装事件处理程序,然后使对象可见。如果您使用visibility: hidden ,那么文档就会正常布局,内容可以做成 visibility: visible安装事件处理程序后。

在对象被解析并进入 DOM 之前,浏览器不会提供对对象的访问,因此任何想要对其进行操作的脚本必须要么物理上位于 DOM 元素之后,要么必须等待指示事件发生DOM 已加载。

当 DOM 元素被解析但尚不可见时,浏览器不会提供事件,因此您必须使用其他方法之一来解决您的问题。

关于javascript - 有没有办法在 HTML 元素出现在页面上时立即将事件处理程序附加到该元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969553/

相关文章:

javascript - 范围问题,从一个 for 循环到另一个 for 循环引用迭代器 "i"

javascript - 同时使用 dom 和 sDom 选项

javascript - 使用 jQuery 检查哪个事件触发了函数?

javascript - jQuery 延迟触发事件

javascript - jQuery 是否会从已销毁的 DOM 内容中删除事件监听器?

javascript - ASP.net - 将列表从代码隐藏传递到 java 脚本的最佳方法是什么?

javascript - 忘记密码 UI 在 laravel 中无法正常工作

javascript - 如何在单击时更改全日历中的默认 View

javascript - 提交表单(以过滤内容)后,结果表将显示在同一页面上。我怎么做?

jquery - CSS3 媒体查询 - 容器的宽度而不是屏幕的宽度?