Обратитесь к файлу Javascript в Jquery - PullRequest
3 голосов
/ 07 октября 2008

У меня есть простой 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>

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

Ответы [ 4 ]

5 голосов
/ 07 октября 2008

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

Также на отдельной заметке нужно поменять

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

до

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

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

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

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

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

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

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

$(func);

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

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

$("#SubmitButton").click(Submit);
1 голос
/ 07 октября 2008

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

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

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

$(document).ready(myfunc);

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

$(myfunc);
0 голосов
/ 07 октября 2008

Почему бы не сбросить

$(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>
0 голосов
/ 07 октября 2008
$('head').append('&lt;script type="text/javascript" src="scripts/scripts.js"/&gt;')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...