2015-02-24 56 views
0

因此,我创建了一个在客户端页面上加载HTML的应用程序,我需要通过JavaScript加载几个脚本并在HTML上执行操作。特别是我需要使用JS来获取同位素JavaScript文件,然后在我们刚创建的HTML上初始化它。使用jQuery.getScript时无法初始化插件(同位素)

另请注意,我在noConflict模式下运行jQuery,因此脚本不会在客户端网站上导致错误。在测试中,如果我在HTML中对<脚本>标记进行了硬编码,则我的代码可以正常工作,但这对于最终产品来说不可行。我需要通过JS获取外部脚本,因为它是动态的。问题是我得到以下错误:

“遗漏的类型错误:未定义是不是一个函数”

Here is a fiddle

<script src="http://code.jquery.com/jquery-1.11.2.min.js" type="text/javascript"></script> 

    <style type="text/css"> 
     div.item {width:200px; height:200px; background:#039; margin:10px;} 
    </style> 

    <div id="container"> 
     <div class="item"></div> 
     <div class="item"></div> 
     <div class="item"></div> 
     <div class="item"></div> 
     <div class="item"></div> 
     <div class="item"></div> 
    </div> 


    <script type="text/javascript"> 
    $(document).ready(function() { 
     ch_jquery = jQuery.noConflict(true); 
     ch_jquery.getScript('http://isotope.metafizzy.co/isotope.pkgd.min.js', function(){ 
      $('#container').isotope();  
     }); 
    }); 
    </script> 

任何意见赞赏!

回答

0

对于初学者,您没有在jsfiddle示例中包含jQuery库。 然后,您应该在$(document).ready()函数之外定义jQuery.noConflictThis is a working example

var ch_jquery = jQuery.noConflict(true); 
$(document).ready(function() { 
     ch_jquery.getScript('http://isotope.metafizzy.co/isotope.pkgd.min.js', function(){ 
     $('#container').isotope();  
    }); 
}); 

编辑 一个与noconflict另一个例子是这一个

var ch_jquery = jQuery.noConflict(); 
ch_jquery(document).ready(function() { 
      ch_jquery.getScript('http://isotope.metafizzy.co/isotope.pkgd.min.js',  function(){ 
       ch_jquery('#container').isotope();  
      }); 
     }); 

JSFIDDLE

+0

我列入 “外部资源” jQuery的。我没有意识到它需要在“框架”之下。谢谢。 您没有为您的isopote初始化或您的(document).ready函数使用“ch_jquery”。当我使用“ch_jquery”而不是“$”时,它会中断。为什么你选择使用“$”,如果有多个版本的jQuery,不会导致冲突。 – DigitalMC 2015-02-24 15:24:00

+0

是的,所以问题仍然存在,但在你的例子中(由于'true'布尔值),你正在解引用每个jQuery相关变量,如文档中所说的 '布尔值,指示是否从全局范围中移除所有jQuery变量(包括jQuery本身)。 http://api.jquery.com/jquery.noconflict/ – rsz 2015-02-24 17:37:38

+0

它也说:“如果由于某种原因加载了两个版本的jQuery(这是不推荐的),调用$ .noConflict(true)从第二个版本将返回全局范围的jQuery变量到第一个版本的变量。“这实际上是我想要做的。保持所有预定义的jQuery引用正常工作,并为我需要运行的所有特定JS创建一个新的jQuery变量“ch_jquery”。 – DigitalMC 2015-02-24 17:55:55