0

正在从 jQuery 1.8 升级到 1.9 并遇到问题。我们有某些页面可以加载到任何给定页面的模式中。我们使用 ajax 执行此操作,然后script从返回的 html 中解析出元素。然后我们将 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 需要在准备好的文档上运行,它在 append 之后运行,根据文档似乎是正确的。真正需要发生的是它需要在将 javascript 脚本附加到head. 而且我们不能只切换这两行的顺序,因为js需要在加载完html后运行才能绑定事件到dom。真的,关于 1.8 和 1.9 之间可能发生的事情的一些想法会非常有帮助。或者,如果其他人成功地实现了通过 ajax 将新页面加载到模式中,我想听听实现。谢谢。

4

1 回答 1

1

好的,所以我相信我只是想通了。我们一直在像这样从正文中解析脚本body_scripts = $( controller_element, "script" ).remove(),而controller_element = $( html ). 将解析更改为body_scripts = $( "script", controller_element ).remove()已为我解决了问题。1.8 的方法应该有效吗?

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

于 2013-02-10T18:01:21.273 回答