#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.)