jQuery Statment не работает в отдельном файле?

#javascript #jquery #html #include #head

#javascript #jquery #HTML #включить #заголовок

Вопрос:

каким-то образом мой простой оператор jQuery не работает, когда я включаю его в свою тему «head»-элемента, например :

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

но когда я использую его в своем «теле»-элементе, он просто отлично работает, как

 <script>
  $( "#testid" ).click(function() {
  alert( "Handler for .click() called." );
  });
</script>
  

Я уже проверил с помощью firebug, что мой test.js файл правильно включается на мой сайт. Так в чем я не прав? The test.js файл выглядит точно так же, как часть «script» выше, только без тегов script.

Любая идея приветствуется 🙂

Комментарии:

1. оберните свой код внутри события готовности документа ..@!

2. вы добавляете test.js после jquery минимальный файл??

3. Убедитесь, что вы включили его в head после jQuery.

4. Раджапрабху просто ударил по нему — он всегда включался после jquery btw.

5. Вы меняете две разные вещи (заголовок / тело и встроенный / внешний файл) и обвиняете неправильный.

Ответ №1:

Вы забываете сказать jQuery , чтобы подождать, пока DOM ready перед запуском вашего кода:

 $(function() {
    $( "#testid" ).click(function() {
        alert( "Handler for .click() called." );
    });
});
  

Когда вы включаете свой код в тег body после целевого элемента, ваш код будет работать. Однако, если вы включите его в раздел body перед целевым элементом или в раздел head, ваш код не будет работать. Поэтому рекомендуется всегда переносить свой код DOM ready . DOM ready может быть записан по-разному:

Все три из следующих синтаксисов эквивалентны:

 $( document ).ready( handler )
$().ready( handler ) (this is not recommended)
$( handler )
  

Ознакомьтесь с документацией: http://api.jquery.com/ready /,
и учебное пособие: http://learn.jquery.com/using-jquery-core/document-ready /

Комментарии:

1. @Kris ваш комментарий предназначался для моего ответа или тот, который только что был удален?

Ответ №2:

Такое ощущение, что я разрываю Раджапрабху, но:

 <script>
  $(document).ready(function (){
    $( "#testid" ).click(function() {
      alert( "Handler for .click() called." );
    });
  });
</script>
  

Ответ №3:

Попробуйте это..

 <script>
$(document).ready(function(){
  $( "#testid" ).click(function() {
     alert( "Handler for .click() called." );
  });
});

</script>
  

Также убедитесь, что ваш скрипт был добавлен после jquery scipt.