Javascript 使用jquery将html字符串加载到div中

Javascript 使用jquery将html字符串加载到div中,javascript,jquery,html,Javascript,Jquery,Html,我正试图将一块html加载到我的div中,但html字符串中的javascript在加载时只占50%左右,因此遇到了一些问题 我知道我可以使用jQuery的: $(div.html(htmlString) 将html加载到必要的div中。导致问题的html是在一个document ready块中完成的,我很好奇,在使用.html(..)时,是否执行了document ready代码,因为页面作为一个整体已经准备好,而加载的html(主要是jquery ui js)中可能没有 <html&g

我正试图将一块html加载到我的div中,但html字符串中的javascript在加载时只占50%左右,因此遇到了一些问题

我知道我可以使用jQuery的:
$(div.html(htmlString)
将html加载到必要的div中。导致问题的html是在一个document ready块中完成的,我很好奇,在使用.html(..)时,是否执行了document ready代码,因为页面作为一个整体已经准备好,而加载的html(主要是jquery ui js)中可能没有

<html>
   <head>
     <script src="..../jquery-ui.min.js"></script>
     <script type="text/javascript"> $(function() {  $("#tabs").tabs(); }); </script>
   </head>
   <body>
      <div>......</div>
   </body>
</html>

但这仍然不是100%可靠,因为加载必要的javascript所需的时间可能会有所不同。有没有办法确保加载的html的文档就绪状态一直等到jQueryUI脚本加载完毕?

您应该始终将脚本和js文件放在正文的末尾。原因是,任何放在头部的内容都必须在加载主体之前完成,因此,将javascript放在头部通常是个坏主意。最好是安全的,在底部加上这个

同样,延迟也不会增加你在这里的机会

<html>
  <head>
     <title>hey you</title>
  </head>
  <body>
    <div>......</div>
   <script src="..../jquery-ui.min.js"></script>
   <script type="text/javascript">
       $(function(){  
            $("#tabs").tabs(); 
       }); 
   </script>
  </body>
</html>

嘿,你
......
$(函数(){
$(“#制表符”).tabs();
}); 

发现了这个问题,John Doe在这个问题上的帖子帮助我们找到了答案-

jquery-ui.min.js是在insite脚本之后加载的,不管它们在页面上的什么位置(在头部或
标记之前)。我最后做的是使用
$.ui
对jquery ui应用检查,并将
async
属性添加到脚本标记中

<script async src=".../jquery-ui.min.js"></script>

加载jquery ui后,我就可以继续执行
$(“#tabs).tabs();
调用


感谢您的评论和帖子!

加载HTML时的代码在哪里?最坏的情况是,您可以将
脚本
移动到正文中,就在
结束标记之前。此外,如果元素使用
$(document.ready)加载到DOM中(function(){
,然后是
$('.\tabs')。tabs();
必须在*HTML注入*之后出现*@ohgod为什么HTML只加载$(div).HTML(contents);很抱歉忽略了这一点。我也尝试过在标记之前将移动到正文中。仍然没有成功否,这是错误的。所有脚本都应该放在标题部分。使用
$(document).ready(function(){})
否定了将脚本放在
正文
标记末尾的必要性-它可以在
标题
中更新,谢谢manseUK。@Leetylor愿意详细说明吗?我也不同意你的意见。@Leetylor这是错误的。脚本不需要放在标题中。出于传统,它们被放在标题中。Javascript将在解析过程中,无论是否在头部发现,都会在任何地方执行。如果你查看Twitter引导示例,你会发现它们在页面末尾包含javascript。这就不需要$().ready一旦解析器访问了这些脚本,DOM就已经准备好了。这样做还可以提高性能。请看这个问题:是的,这只是我的老学识。我已经读过了,我意识到不再是这种情况(脚本的放置)。但是,使用onLoad()或$(文档).ready应用于确保DOM已准备好进行操作。
<script async src=".../jquery-ui.min.js"></script>