jquery не работает, когда я не помещаю его в jQuery (документ).готово

#php #javascript #jquery

#php #javascript #jquery

Вопрос:

 jQuery(document).ready(function(){
    jQuery(".test").click(function() {
        alert(1);
    });
});
  

Когда я пытаюсь не помещать :

 jQuery(".test").click(function() {
            alert(1);
        });
  

внутри a jQuery(document).ready() это не сработает.

Как вы думаете, в чем причина этого? Я уже загрузил пользовательский скрипт с этой функцией.

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

Любой ответ будет оценен и вознагражден.

Спасибо!

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

1. Я думаю, ответ Амадана правильный. Спасибо за ответ @BryanRoss, из-за этого я дам вам UP! 🙂

Ответ №1:

Если вы загружаете его <head> , значит, ваш .test код еще не загружен во время выполнения вашего кода. Таким образом, jQuery(".test") возвращает [] , поэтому click событие ни к чему не привязывается. Если вы переместите свое <script> на последнее <body> , это должно сработать.

Ответ №2:

Поведение, которое вы видите, является нормальным и правильным.

Когда вы говорите:

 jQuery(".test").click(function() {
   alert(1);
});
  

Это означает «найти все элементы, которые существуют прямо сейчас, с помощью класса ‘test’ и назначить обработчик щелчков для этих элементов». Если вы поместите такой код за пределы document ready, браузер не будет анализировать какой-либо HTML-код после этого фрагмента скрипта, поэтому он не найдет никаких элементов, определенных дальше по странице — они еще не существуют в DOM.

Помещение кода в document.ready (или в обработчик события onload) означает, что он не будет запущен, пока не будет проанализирована вся страница, после чего все элементы будут существовать и могут быть доступны из вашего кода. (Это также должно сработать, если вы поместите его прямо внизу страницы после всего HTML.)