Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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/9/csharp-4.0/2.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 在DOM初始加载后侦听元素渲染_Javascript_Jquery_Dom_Dom Manipulation - Fatal编程技术网

Javascript 在DOM初始加载后侦听元素渲染

Javascript 在DOM初始加载后侦听元素渲染,javascript,jquery,dom,dom-manipulation,Javascript,Jquery,Dom,Dom Manipulation,加载后是否仍有侦听元素添加到DOM的方法?目前,我有一组使用DataTables的表,还有一组其他元素,如果我要查找的元素类型被发现“出现”在页面上,我会处理这些元素。因为我试图做的只是在加载时对页面上当前的元素起作用,而不是在加载之后,所以对于当前正在使用的许多元素来说就是这样 最终,我目前正在寻找一种方法,以避免返回整个代码库,仅在页面上找到某个内容,但在加载该内容之后,才使其发生。没有“元素添加到dom”之类的跨浏览器兼容的事件,而那些针对特定浏览器的浏览器通常不受欢迎,因为它们往往会导致

加载后是否仍有侦听元素添加到DOM的方法?目前,我有一组使用DataTables的表,还有一组其他元素,如果我要查找的元素类型被发现“出现”在页面上,我会处理这些元素。因为我试图做的只是在加载时对页面上当前的元素起作用,而不是在加载之后,所以对于当前正在使用的许多元素来说就是这样

最终,我目前正在寻找一种方法,以避免返回整个代码库,仅在页面上找到某个内容,但在加载该内容之后,才使其发生。

没有“元素添加到dom”之类的跨浏览器兼容的事件,而那些针对特定浏览器的浏览器通常不受欢迎,因为它们往往会导致比解决问题更多的问题

DOM中不存在的元素的问题通常是它们缺少事件绑定。jQuery具有非常棒的事件委派,可用于将事件绑定到容器,以便当事件冒泡到容器时,在接收事件的元素的上下文中触发回调

例如,可以使用以下命令绑定事件:

$('a').click(doStuff);
但这对任何新链接都不起作用,相反,您可以使用以下内容:

$('#some-container').on('click', 'a', doStuff);

它将拦截
#某些容器
元素中所有链接上的所有单击事件,而不管它们是何时添加到页面中的。

没有跨浏览器的方法来处理此问题,因为原始方法(DOMMutationEvents)效率非常低。现在有观察家关注这一点,但这也不是跨浏览器的。如果这些元素都是由jQuery方法添加的,那么您可以使用livequery插件来实现这一点,当使用jQuery方法添加新元素时,monkeypatches会捕获所有dom操作方法,这意味着您需要重新思考您的逻辑,并以这样的方式重新组织它,即您能够在逐个添加所述元素后运行代码,而不是尝试执行全局侦听器来侦听要添加到DOM中的任何元素。例如,ajax请求的成功回调。另一种选择(正如ZZBOV所指出的)是委派事件,但这当然只适用于事件。不幸的是,代码库已经建立并在生产中使用。就目前而言,我一直在努力解决我的问题。直到我的公司允许我有时间重建前端的一切