jQuery1.9将html附加到页面中,然后是一个脚本,两者都依赖于文档准备

jQuery 1.9 appending html into page and then a script, both dependant on document ready

本文关键字:一个 脚本 两者都 文档 依赖于 然后 html jQuery1      更新时间:2023-09-26

正在从jQuery 1.8升级到1.9并遇到问题。我们有一些页面可以加载到任何给定页面上的模态中。我们使用ajax来完成这项工作,然后从返回的html中解析出script元素。然后,我们将html附加到页面,然后将脚本附加到head。它看起来像这样:

controller_element = $( html )
body_scripts = $( controller_element, "script" ).remove()
$( ".modal-body" ).append controller_element
$("head").append body_scripts

这在1.8之前是有效的,但我们现在在1.9中遇到了问题。这个问题似乎围绕着文档准备活动展开。html有一些内联javascript,需要在文档就绪的情况下运行,它正好在附加之后运行,根据文档,这似乎是正确的。真正需要做的是,它需要在javascript脚本附加到head之后运行。我们不能只切换这两行的顺序,因为js需要在加载html后运行,才能将事件绑定到dom。实际上,对1.8到1.9之间可能发生的事情进行一些思考会非常有帮助。或者,如果其他人成功地实现了通过ajax将新页面加载到模态中,我想听听实现的情况。谢谢

好吧,所以我相信我刚刚想好了。我们一直在解析正文中的脚本,比如body_scripts = $( controller_element, "script" ).remove()controller_element = $( html )。将解析更改为body_scripts = $( "script", controller_element ).remove()为我解决了这个问题。1.8的方法应该有效吗?

因此,从本质上讲,您需要从html中删除包括inline在内的所有script。附加html,然后附加脚本。html现在可以绑定到任何事件,并且内联脚本可以在加载所有内容的情况下运行。

相关文章: