2012-12-22 21 views
0

我在加入到WordPress站點的一些自定義文件使用jQuery,和我用這個,讓我用「$」的快捷方式:

jQuery(function ($) { 
    $(selector).bla(); 
    // etc 
} 

但是,如果我想將我的代碼拆分爲多個文件,則此構造需要存在於每個文件中,然後才能從另一個文件中調用函數。這個怎麼做?我能以某種方式將某些功能聲明爲全局嗎?

回答

0

jQueryUI的實際寫入類似的方式:

(function($, undefined) { 
    ... 
}(jQuery)); 

這種方式,$保證是用於jQuery功能和關鍵字undefined的同義詞將被定義爲與一個未定義的值參數。 undefined部分實際上用一些瀏覽器修正了一些挑剔的問題,因爲它們並不都以相同的方式處理未定義的問題。

+0

請問這個答案這個問題? –

0

您可以隨時聲明功能jQuery(function() {...});結構,在全球範圍內。

在DOM準備就緒之前,您只能訪問DOM,這意味着如果他們訪問DOM,那麼無法執行以外的那些功能jQuery(function() {...});


您也可以隨時到window屬性賦值創建一個全局變量:

window.theanswer = 42; 

添加多個值,以全局命名空間是不是一個好的做法,以及其他技術存在創建模塊化JavaScript來解決這個問題。 See tvanfosson's answer

1

您可能想要使用requirejs來定義模塊,然後將模塊作爲依賴關係傳遞。你也可以用它來定義jQuery作爲依賴關係,這樣它就可以用你想要的任何變量名在本地作用域。

require(['jquery','somemodule','someothermodule'], function($,module1,module2) { 
    $(function() { 
     var mod1 = new module1(); 
     var mod2 = new module2(); 
     ... 
    }); 
}); 
1

您可以使用這樣的事情:

var myFunc = function($) { 
    function toExport() { 
      alert($); 
    } 

    return toExport; 
}(jQuery);​ 

只返回你需要的資源(也可以是單功能或對象,或任何你真正想要的。)

相關問題