2013-03-24 119 views
0

我是新來的jQuery,來自Python和Java背景,所以我很難習慣如何在不同的.js文件中工作。我有一個導入以下腳本的HTML文件:從不同的「模塊」導入函數

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script 
     src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js"></script> 
    <script src="{{ STATIC_URL }}/forms.js"></script> 
    <script src="{{ STATIC_URL }}/workout1Alt.js"></script> 

最後兩個是我的。在forms.js中,我有一個通用函數validateNumberForm,我希望能夠在我的更具體的workout1Alt.js窗體中使用。表單的簽名如下所示:

var validateNumberForm = function(id) 

我調用validateNumberFormworkout1Alt.js這樣的:

validateNumberForm('#squatsForm'); 

但我得到這個錯誤:

Reference Issue: Cannot find variable validateNumberForm. 

有人能告訴我的最佳實踐如何做這樣的事情?

+0

你從兩個JS文件顯示的代碼片段有'validateNumberForm'結尾沒有's',但是在你的描述和錯誤信息中你有'validateNumberForms' _with_s'。你確定你在這兩個文件中的拼寫一致嗎? – nnnnnn 2013-03-24 21:36:57

+0

錯字 - 它在代碼中一致;編輯以反映它。 – user1427661 2013-03-24 21:39:47

回答

1

我猜你包裹定義一個jQuery的準備處理程序裏面,像這樣:

$(function() { 
    var validateNumberForm = function(id) { /* ... */ }; 
    // ... 
}); 

這使得validateNumberForm只在那裏提供。如果你希望它是提供給其他文件,你可以將它移出準備處理程序:

var validateNumberForm = function(id) { /* ... */ }; 
$(function() { 
    // ... 
}); 

或者你可以明確地導出:

$(function() { 
    var validateNumberForm = function(id) { /* ... */ }; 
    window.validateNumberForm = validateNumberForm; 
    // ... 
}); 
+0

很酷。有一件事:我猜window.validateNumberForm方法不是完全可取的?我首先嚐試了這一點,但是它導致了一些奇怪的行爲,當我在jQuery塊之外聲明該函數時,這種行爲不存在。 – user1427661 2013-03-24 21:50:08

+0

@ user1427661:正確;在'ready'塊中定義它只會在頁面的其他部分加載時纔可用。在外部定義它之後,只要加載該代碼,就立即可用。 – icktoofay 2013-03-24 22:45:26

相關問題