2011-09-05 95 views
4

我有一個可以多次添加到頁面的asp.net UserControl。在這個UserControl上,我使用了一個我只想加載一次的jQuery插件。我使用下面的代碼有條件地加載jQuery的本身:如何有條件加載jQuery插件?

if (typeof jQuery == 'undefined') { 
    // load jquery 
    var script = document.createElement('script'); 
    script.type = "text/javascript"; 
    script.src = "/_layouts/SprocketValidator/jQuery.js"; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} else { 
    //already loaded 
} 

會不會有因爲如果一個jQuery插件是未定義的檢查等同?我使用的插件是digitalBush masked input plugin

+0

一旦jQuery是加載,所有你需要做的是檢查:[代碼]如果{$ .getScript( 'pluginurl');} [(插件!)/code] – lucifurious

回答

3

嘗試:

if (typeof jQuery.fn.mask == 'undefined') 

jQuery的方法(插件的方法通常太)被存儲爲$.fn性質,所以你需要檢查,如果插件裏面可用的方法(例如mask())是已知的作爲$.fn的成員

+0

這看起來很有前途,但我會在哪裏放?我試着在上面的代碼之後立即刪除它,但是我得到這個錯誤:''jQuery沒有定義'在你提供的條件。我猜jQuery現在還沒有機會加載,但是在哪裏放置它呢? –

+0

你最好使用document.write()將'

0

您可以使用類似YepNope.js,您可以找到here。然後,你可以寫你的JavaScript這樣的:

yepnope({ 
    test: window.JSON, 
    nope: "/_layouts/SprocketValidator/jQuery.js", 
    complete: function() { 
    var data = window.JSON.parse('{ "json" : "string" }'); 
    } 
});