首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态加载jquery

动态加载jquery
EN

Stack Overflow用户
提问于 2012-03-25 23:10:12
回答 1查看 1.2K关注 0票数 4

我在一个非常扭曲的环境中工作,我无法通过我正在使用的MVC框架(Cakephp)的视图逻辑来处理这个问题。这可能是因为我必须在一个页面中加载这段代码,该页面已经加载了一个jQuery脚本。

如果我只是在我的代码片段中加载jQuery,只要不存在其他jQuery脚本,它就可以工作。当有两个脚本时,它无法工作,并显示为$ is not a function。我不太确定这是如何工作的,但解释可能会有所帮助。

无论如何,我已经到了将脚本动态加载到页面中的地步。

所以这是我的代码:

代码语言:javascript
复制
<script id="loadjq" type="text/javascript"></script>
<script id="loadcloud" type="text/javascript"></script>
<script type="text/javascript">
if(typeof jQuery=="undefined"){
    document.getElementById('loadjq').src= 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js';
}
document.getElementById('loadcloud').src= '/js/jqcloud.js';
$(document).ready(function(){
    $("#tagcloud").jQCloud(word_list,{});
});
</script>

这会加载脚本,但当我尝试加载jqcloud.js时,它找不到其他脚本,可能是因为它在加载其他脚本之前运行。通过一些肮脏的把戏,我可以通过它,但是当我到达$(document).ready(function()时,同样的问题也会发生

有没有一种干净利落的方法呢?我需要它在执行之前等待之前的脚本被加载,或者至少这就是问题的样子。我不确定这是否真的是我的问题。

EN

回答 1

Stack Overflow用户

发布于 2012-03-26 02:50:03

如何在jquery脚本元素上设置事件处理程序,以便在加载完成时调用jqcloud脚本。就像这样

代码语言:javascript
复制
if(typeof jQuery=="undefined"){
   var loadjqScript = document.getElementById('loadjq').src =
                'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js';
        // Code below handles browser that support script onload 
        // and ones that don't
   var loadFunction = function()  
   {  
      if (this.readyState == 'complete' || this.readyState == 'loaded') {  
           loadJqCloud();   
      }  
   };  
   loadjqScript.onreadystatechange = loadFunction;

   loadjqScript.onload = loadJqCloud;  
}

function loadJqCloud() {
    document.getElementById('loadcloud').src= '/js/jqcloud.js'
 }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9861207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档