Javascript 基于动态生成的DOM元素运行脚本

Javascript 基于动态生成的DOM元素运行脚本,javascript,jquery,Javascript,Jquery,我正在使用第三方产品。它在页面上使用JavaScript(非JQuery)代码动态生成DOM元素 每当第三方代码生成与给定选择器匹配的DOM元素时,是否可以运行jQuery脚本 用另一种方式解释,我不想尝试与该代码集成。我只想观察要创建的某些元素,这是运行我自己的自定义jQuery的提示。有所谓的。不过,我不确定它们在不同浏览器中的支持程度,因为我还没有机会使用它们。它们甚至没有被列入清单。有所谓的。不过,我不确定它们在不同浏览器中的支持程度,因为我还没有机会使用它们。它们甚至没有在中列出。根据

我正在使用第三方产品。它在页面上使用JavaScript(非JQuery)代码动态生成DOM元素

每当第三方代码生成与给定选择器匹配的DOM元素时,是否可以运行jQuery脚本


用另一种方式解释,我不想尝试与该代码集成。我只想观察要创建的某些元素,这是运行我自己的自定义jQuery的提示。

有所谓的。不过,我不确定它们在不同浏览器中的支持程度,因为我还没有机会使用它们。它们甚至没有被列入清单。

有所谓的。不过,我不确定它们在不同浏览器中的支持程度,因为我还没有机会使用它们。它们甚至没有在中列出。

根据jquery文档,听起来
load()
可以用于任何元素,而不仅仅是窗口/文档类型的元素。因此,如果您知道元素将是什么(id、类),您可以使用
load()
将jquery绑定到那些选择器上,并执行您需要执行的操作。

根据jquery文档,它听起来像
load()
可以用于任何元素,而不仅仅是窗口/文档类型的元素。因此,如果您知道元素将是什么(id、类),您可以使用
load()
将jquery绑定到这些选择器,并执行您需要执行的操作。

根据您需要支持的浏览器,您可以使用Reinis所指的DOM突变事件

以下是用于测试目标浏览器的在线资源:


如果目标浏览器不支持这些事件,我能想到的唯一替代方法是轮询包含新元素的任何节点的内容。

根据需要支持的浏览器,您可能可以使用Reinis所指的DOM突变事件

以下是用于测试目标浏览器的在线资源:


如果您的目标浏览器不支持这些事件,我能想到的唯一选择是轮询包含新元素的任何节点的内容。

除了Reinis提到的DOM突变事件,我可以想到三个选项:

1) 如果您只想对新元素进行事件处理,可以使用

2) 可以使用setTimeout定期检查DOM中的新元素

3) 如果您想深入第三方代码(为了理解,而不是直接修改),那么您可以提供一个函数重写,在它们的函数执行时显式地通知您

var oldFunc = thirdParty.theirFunc;
thirdParty.theirFunc = function(){ 
    oldFunc();

    // alert myself of the change.
    myDomChangedFunction();
};

通过这种方式,您实际上没有直接修改它们的源代码,只是在功能上:)

除非Reinis提到DOM突变事件,否则我可以想到三种选择:

1) 如果您只想对新元素进行事件处理,可以使用

2) 可以使用setTimeout定期检查DOM中的新元素

3) 如果您想深入第三方代码(为了理解,而不是直接修改),那么您可以提供一个函数重写,在它们的函数执行时显式地通知您

var oldFunc = thirdParty.theirFunc;
thirdParty.theirFunc = function(){ 
    oldFunc();

    // alert myself of the change.
    myDomChangedFunction();
};
通过这种方式,您实际上没有直接修改它们的源代码,只是在功能上:)

查看jQuery的“实时”事件绑定,它可能会有帮助:

在jQuery1.3中添加:将处理程序绑定到所有当前和未来匹配元素的事件(如单击)。还可以绑定自定义事件

查看jQuery的“实时”事件绑定,它可能会有帮助:

在jQuery1.3中添加:将处理程序绑定到所有当前和未来匹配元素的事件(如单击)。还可以绑定自定义事件


如果一个AJAX调用改变了您的DOM,并且您想要使用jQuery,请查看

.ajaxComplete()
资料来源: 它监听任何ajax调用

或者要处理DOM树中的任何更改,请使用

MutationObserver

来自mozilla开发者的更多信息:


如果AJAX调用改变了您的DOM,并且您想使用jQuery,请查看

.ajaxComplete()
资料来源: 它监听任何ajax调用

或者要处理DOM树中的任何更改,请使用

MutationObserver

来自mozilla开发者的更多信息:


@Anthony-我真的不知道:)。我从未见过您在load()解决方案中提出的建议。您是否建议每次浏览器加载完元素时都触发onload()?(比如初始页面加载,或者当它通过AJAX调用将新元素加载到DOM中时)@Anthony-我真的不知道:)。我从未见过您在load()解决方案中提出的建议。您是否建议每次浏览器加载完元素时都触发onload()?(比如初始页面加载,或者当它完成从AJAX调用加载新元素到DOM中时)DOM变异事件一旦实现就会非常棒,但遗憾的是它在Opera、IE或FF2中不受支持。DOM变异事件一旦实现就会非常棒,但遗憾的是Opera、IE或FF2中不支持它。