2008-10-07 2 views
3

У меня простой HTML. Я использую JQuery для цели AJAX. Теперь я хочу поместить функцию javascript в отдельный файл javascript. Каков синтаксис для этого? Например, в настоящее время раздел сценария в HTML-то вроде этого:Обратитесь к Javascript файлу в JQuery

<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 тег, а затем просто переместить весь этот встроенный скрипт Бло ck в scripts.js. Поскольку jQuery уже был создан с момента загрузки scripts.js, Javascript просто выполнит встроенную последовательность так же, как и в настоящий момент.

Также на отдельной записке, вам необходимо изменить

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

в

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

Вы не хотите, круглые скобки, потому что вы не выполняет функции в этой точке, просто Рассказывая щелкните обработчик события, что это имя функции, которую вы хотите выполнить при срабатывании события.

И как еще один совет, вы можете заменить $(document).ready( с $( т.е.

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

Оба $ и document.ready могут быть включены в любом месте на странице (или во внешних файлах) и до тех пор, как jquery.js в scope, они будут запускаться одновременно (после загрузки DOM) - вам не нужно беспокоиться о том, что это последний бит кода для запуска. Вот почему вы можете переместить все это в сценарии.js, вместо того, чтобы назначать имя функции и ссылаться на нее из встроенного скрипта.

Для записи, если вы хотите, чтобы обратиться к функции по имени, просто определить его в качестве переменной:

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

$(func); 

Как я говорю, хотя, это, возможно, несколько избыточна в вашей ситуации, вы могли бы а просто переместить все к scripts.js (если, конечно, нет больше, чем вы упомянули в своем вопросе

Edit (для редактирования дело с вопросом):. Похоже, что вы имеете дело с неправильный обработчик событий. Вы пытаетесь назначить функцию обработчику событий click для формы, тогда как вы действительно хотите назначить его обработчику кнопки отправки. Таким образом, вы должны использовать селектор '#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> 
Смежные вопросы