Javascript jQuery1.9将html追加到页面中,然后追加到脚本中,两者都取决于文档准备情况

Javascript jQuery1.9将html追加到页面中,然后追加到脚本中,两者都取决于文档准备情况,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,正在从jQuery1.8升级到1.9,遇到了问题。我们有一些页面可以加载到任何给定页面的模式中。我们使用ajax实现这一点,然后从返回的html解析出脚本元素。然后,我们将html附加到页面中,然后将脚本附加到标题中。它看起来像这样: controller_element = $( html ) body_scripts = $( controller_element, "script" ).remove() $( ".modal-body" ).append controller_elemen

正在从jQuery1.8升级到1.9,遇到了问题。我们有一些页面可以加载到任何给定页面的模式中。我们使用ajax实现这一点,然后从返回的html解析出
脚本
元素。然后,我们将html附加到页面中,然后将脚本附加到
标题中。它看起来像这样:

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

这在1.8之前是有效的,但现在我们在1.9中遇到了问题。问题似乎围绕着准备文档的事件。html有一些内联javascript需要在documentready上运行,它在append之后运行,根据文档,append似乎是正确的。真正需要做的是,它需要在javascript脚本附加到
头之后运行。我们不能仅仅切换这两行的顺序,因为js需要在加载html后运行,以便将事件绑定到dom。真的,一些关于1.8和1.9之间可能发生的事情的想法会非常有用。或者,如果其他任何人成功实现了通过ajax将新页面加载到模式中,我想听听实现。谢谢。

好的,我想我已经明白了。我们一直在从主体中解析脚本,就像这样
body\u scripts=$(controller\u元素,“script”).remove()
,以及
controller\u元素=$(html)
。将解析更改为
body\u scripts=$(“script”,controller\u element).remove()
为我解决了这个问题。1.8方法是否应该奏效

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