Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种方法可以在HTML元素出现在页面上时立即将事件处理程序附加到该元素。_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript 是否有一种方法可以在HTML元素出现在页面上时立即将事件处理程序附加到该元素。

Javascript 是否有一种方法可以在HTML元素出现在页面上时立即将事件处理程序附加到该元素。,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我不想等到整个HTMLDOM准备就绪。请注意,我不是在谈论动态加载的HTML元素。我说的是HTML中的元素,但尚未呈现。三个想法: 在HTML中使用属性,如onclick=“foo()”。这将立即生效 您可以在HTML中嵌入的HTML元素之后立即放置一个标记,并让该脚本添加事件处理程序。位于脚本之前的所有DOM元素都保证被解析并准备就绪 您可以通过最初隐藏元素(内联样式规范或CSS),然后等待它出现在DOM中,运行脚本安装事件处理程序,然后使对象可见。如果使用visibility:hidden,

我不想等到整个HTMLDOM准备就绪。请注意,我不是在谈论动态加载的HTML元素。我说的是HTML中的元素,但尚未呈现。

三个想法:

  • 在HTML中使用属性,如
    onclick=“foo()”
    。这将立即生效

  • 您可以在HTML中嵌入的HTML元素之后立即放置一个
    标记,并让该脚本添加事件处理程序。位于脚本之前的所有DOM元素都保证被解析并准备就绪

  • 您可以通过最初隐藏元素(内联样式规范或CSS),然后等待它出现在DOM中,运行脚本安装事件处理程序,然后使对象可见。如果使用
    visibility:hidden
    ,则文档将按常规布局,并且在安装事件处理程序后,可以使内容变为
    visibility:visible

  • 在解析对象并将其放入DOM中之前,浏览器不会提供对该对象的访问,因此,要对其进行操作的任何脚本都必须在DOM元素之后进行物理定位,或者必须等待指示已加载DOM的事件发生


    当解析DOM元素时,浏览器不提供事件,但还不可见,这将为您提供在该时刻对其进行操作的机会,因此您必须使用这些其他方法之一解决问题。

    您必须等待document.body呈现

    在那之后,任何事情都可以这样做

    var ele = document.createElement("div");
    ele.onclick = function(e){...};
    document.body.appendChild(ele);
    

    OP说这不是动态HTML元素,而是页面HTML中的元素。