Обратитесь к файлу Javascript в JQuery

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

<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>

Тем не менее, он все еще не работает, я что-нибудь пропустил?

Можете ли вы опубликовать свою разметку HTML?

Luke Bennett 07.10.2008 12:24
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
3
1
4 910
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

$('head').append('&lt;script type = "text/javascript" src = "scripts/scripts.js"/&gt;')

Да, это не проблема, просто сохраните функцию как переменную, как и любую другую.

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

Затем вы можете использовать следующий синтаксис, чтобы запустить его в своей функции инициализации jQuery:

$(document).ready(myfunc);

Существует также сокращенный синтаксис для кода, который запускается в готовом документе, который просто передает функцию в jQuery:

$(myfunc);
Ответ принят как подходящий

Переместите тег scripts.js script под тегом jQuery script, а затем просто переместите весь этот встроенный блок сценария в scripts.js. Поскольку jQuery уже будет создан к моменту загрузки scripts.js, Javascript будет просто выполняться встроенным способом так же, как и в данный момент.

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

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

к

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

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

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

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

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

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

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

$(func);

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

Редактировать (чтобы иметь дело с редактированием вопроса): Похоже, вы имеете дело не с тем обработчиком событий. Вы пытаетесь назначить функцию обработчику события щелчка для формы, тогда как вы действительно хотите назначить ее обработчику для кнопки отправки. Поэтому вы должны использовать селектор '#SubmitButton', то есть:

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

Почему бы не свалить

$(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>

Другие вопросы по теме