2008-10-07 36 views
3

我有一個簡單的HTML。我正在使用JQuery來實現AJAX目的。現在,我想把我的JavaScript函數放在一個單獨的JavaScript文件中。這是什麼語法?例如,目前在HTML我的腳本部分是這樣的:參考Jquery中的Javascript文件

<script> 
<script type="text/javascript" src="scripts/scripts.js"></script> 
<script type="text/javascript" src="scripts/jquery.js"></script> 
<script type = "text/javascript" language="javascript"> 
$(document).ready(function() { 
    $("#SubmitForm").click(Submit()); 
}); 
</script> 

但是我希望把功能

function() { 
    $("#SubmitForm").click(Submit()); 
}) 
在文件scripts.js中

。我可以使用爲該功能分配一個名稱並引用它嗎?

編輯:我還是有一點問題就在這裏:我改變了代碼

<script type = "text/javascript" language="javascript"> 
$(document).ready(function() { 
    $("#SubmitForm").click(submitMe); 
}); 
</script> 

,並在一個單獨的js文件,我有以下代碼:

var submitMe = function(){ 
alert('clicked23!'); 
//$('#Testing').html('news'); 
}; 

這裏的身體部分:

<body> 
welcome 
<form id="SubmitForm" action="/showcontent" method="POST"> 
<input type="file" name="vsprojFiles" /> 
<br/> 
<input type="submit" id="SubmitButton"/> 
</form> 

<div id="Testing"> 
hi 
</div> 

</body> 

但是,它仍然沒有工作,我想念什麼?

+0

你可以發佈你的HTML標記? – 2008-10-07 08:24:55

回答

5

移動的scripts.js中script標記下來了jQuery script標籤的下方,然後只將整個內聯腳本的BLO ck到scripts.js。由於jQuery在script.js加載時已經被實例化,所以Javascript將以與它目前相同的方式內聯執行。

同樣在一個單獨的說明,您需要更改

$("#SubmitForm").click(Submit()); 

$("#SubmitForm").click(Submit); 

,因爲你不是在這一點上執行的功能,只是告訴你不想括號中的單擊事件處理程序,這是您在事件觸發時要執行的函數的名稱。

而作爲另一個技巧,你可以將其替換$(document).ready($(即:

$(function() { 
    $("#SubmitForm").click(Submit); 
}); 

兩個$document.ready可以隨時隨地在頁面上包含(或外部文件),並且只要jquery.js和在它們會在同一時間觸發(一旦DOM已經加載) - 你不必擔心它是最後一段代碼觸發。這就是爲什麼你可以將整個東西移動到腳本。js而不是需要爲該函數指定一個名稱並從內聯腳本引用它。

爲了記錄在案,如果你想通過名稱引用的功能,只需將它定義爲一個變量:

var func = function() { 
    $("#SubmitForm").click(Submit); 
}; 

$(func); 

就像我說的,雖然,這可能是有點矯枉過正你的情況,你可能以及只是將整個東西移動到scripts.js(除非當然,除了你提到的問題,還有更多的東西。)

編輯(處理編輯問題):看起來你正在處理錯誤的事件處理程序,您正試圖爲窗體的單擊事件處理程序分配一個函數,而你真的想把它分配給提交按鈕的處理程序。因此,你應該使用選擇 '#SubmitButton',即:

$("#SubmitButton").click(Submit); 
-4
$('head').append('&lt;script type="text/javascript" src="scripts/scripts.js"/&gt;') 
1

是的,這不是問題,只需將函數作爲變量存儲,就像其他任何方式一樣。

var myfunc = function(){ 
    // Do some stuff 
} 

然後,您可以使用下面的語法在您的jQuery的初始化函數運行:

$(document).ready(myfunc); 

另外還有一點是在文檔上運行準備代碼快捷的語法,這僅僅是傳遞一個函數到jQuery的:

$(myfunc); 
0

爲什麼不拋售

$(document).ready(function() { 
    $("#SubmitForm").click(Submit); 
}); 
在外部文件

?它會像當前一樣工作,因爲您可以堆疊onDomReady事件。然後

你的HTML應該是這樣的(注意,第一<script>是壞的):

<script type="text/javascript" src="scripts/scripts.js"></script> 
<script type="text/javascript" src="scripts/jquery.js"></script> 
<script type="text/javascript" src="scripts/scripts.js"></script>