2015-02-24 29 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