jQuery1.9将html附加到页面中,然后是一个脚本,两者都依赖于文档准备
jQuery 1.9 appending html into page and then a script, both dependant on document ready
正在从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现在可以绑定到任何事件,并且内联脚本可以在加载所有内容的情况下运行。